Kmeansに関する豆知識②

こんにちは!EMです^^

日本ではもう桜の時期みたいですね。

今年は比較的暖冬でしたが、それでも春が待ち遠しいです。

 

さて、さっそく前回の続きを学んでみましょう!

 

 

machinelearningforbeginner.hatenablog.com

 

今回もいくつかの項目に分けて、知ってて得する豆知識を解説していきます!

 

 

目に見えないデータとKMeansのポイントは?


前回、KMeansが適合したデータに対して何を予測したかを視覚化しました。

KMeansに目に見えないデータを与えるとどうなるでしょうか?

これはテストセットに似ているように見えますが、全く同じではありません。

テストセットでは、モデルが新しいデータにどのように一般化されるかを
スコアリングします。

しかしKMeansでは新しいデータを、検出されたクラスターのどれに
新しいデータが属しているかを確認しようとします。

Irisデータを読み込んでいきましょう(今のところラベルを無視していきます)
※Irisデータとは花(アメヤ)を扱った有名なデータセットです
 
 
 
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()

X = iris.data
y = iris.target

X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3
                             random_state=1)

 

まず、何個のクラスターを作るか決めていきましょう。

 

k_range = np.arange(1,10+1)

inertia_list = []

for k in k_range :
    
    #Specify the model
    k_means_model = KMeans(n_clusters = k)
    k_means_model.fit(X_train)
    
    inertia_list.append(k_means_model.inertia_)
    
plt.scatter(k_range,inertia_list)
plt.show()
 
 
 
 
ここではかなり早く横ばいになっているようです。
おそらく2つか3つのクラスターに分ける事ができるでしょう。
それぞれ考えたモデルを試してみましょう。
 
 
two_means_model = KMeans(n_clusters = 2)
two_means_model.fit(X_train);

three_means_model = KMeans(n_clusters = 3)
three_means_model.fit(X_train);
 
 
 
学習した方法で、いくつか視覚化してみましょう。
今回は、特徴のペアをプロットすることによって行います。
 
 
y_predict = two_means_model.predict(X_train)
plt.scatter(X_train[:,0],X_train[:,2],c=y_predict)
plt.title("2 Means")
plt.show()

y_predict = three_means_model.predict(X_train)
plt.scatter(X_train[:,0],X_train[:,2],c=y_predict)
plt.title("3 Means")
plt.show()
 

 

どちらのクラスタリングも妥当であるようにみえますが

実際のIrisラベルを見ると、3つのグループのクラスタリングが非常に優れていると言えるでしょう。

 

これで、新しい花や、他のデータを見つけて分類したい場合
このモデルを使用して、検出されたクラスターの1つに新しいポイントを割り当てることができます。

 

y_predict = two_means_model.predict(X_test)
plt.scatter(X_test[:,0],X_test[:,2],c=y_predict)
plt.title("2 Means")
plt.show()

y_predict = three_means_model.predict(X_test)
plt.scatter(X_test[:,0],X_test[:,2],c=y_predict)
plt.title("3 Means")
plt.show()
 
 

 

なぜこれらの新しいデータポイントをクラスター化したいのでしょうか?

なぜ古いデータポイントをクラスター化したいのでしょうか?

 

同様のデータポイントを持つグループにデータを配置する機能は非常に便利です。

 

 

  1. データラベルが不足している場合、これは分類の為の良い代わりの手段として
    役立ちます。
  2. データを割り当てて、「自然な」クラスターをつくると
    これらのクラスターを使ってモデルを導く事ができます。
    たとえば、小売店の顧客をクラスタリングしている場合
    1つのクラスターが買い物量が多い客を表し、別のクラスターに新しい要素が
    含まれていることがわかります。
    こうする事で、マーケティングのパターンを見つけることができます。
  3. クラスタリングを使用して、他のアルゴリズムの機能をつくることができます。(これはかなり高度なトピックです)

 

いかがだったでしょうか?

クラスターについては、ビジネスの場面でも使い道がたくさんありそうですよね。

 

それでは今日はここまでにします。

 

 

 

最後に皆様に2点、朗報です!

 

IT関連で働きたいけど、未経験の方!

スキルアップしながら、学校にいくお金を節約+お給料をもらえる仕事を紹介してくれる
夢のようなサイトがあります。

それが「IT求人ナビ」です!

 

↓↓

今後、エンジニアやWEBデザイナー等でキャリアを築こうとしている方
IT求人ナビの就職のプロが相談にのってくれるので
企業の実態の話を聞けたり、ブラック企業を避ける事ができるという点でも
今後の参考になると思います!

 

 

もう一つは、すでに別の仕事をしている社会人の方のコースです。 


もし、もっと効率よく、実践のビジネスの場に繋げられる様に、まず勉強に専念したい!という方に
おススメの講座を見つけたので、気になる方はぜひ無料説明会を通じてみてみてください!!

 

↓↓



データミックスでは、様々なケーススタディ等を通じて、未経験からでも
6か月でデータサイエンティストを目指せるコースや、基礎固めのコースなど
データ分析の内容を中心に、様々なプログラムを開講しています!

もしサクッと情報を収集したいという方は、このコースについて
メリットデメリットをまとめた記事もあるので、そちらも参考にしてみてください。

 

machinelearningforbeginner.hatenablog.com

 

最後まで読んで頂きありがとうございました^^