は、3個の重心点の初期値をランダムに選んでいます。次に kmeans.fit(x) によって k-means 法を用いて各クラスターの重心を計算しています。y_predに各点のクラスター番号が求まります。c=y_pred[:] により、各点のクラスター番号に応じて点の色 (c)を設定して散布図を作成・表示します。結果を図3.5に示します。各点がどのクラスターに属するかというグループ分け(クラスタリング)が行われ、教師データなしに正しく色付けされていることがわかります。kmeans=KMeans(init='random',n_clusters=3)kmeans.fit(x)y_pred=kmeans.predict(x)plt.scatter(x[:,0],x[:,1],c=y_pred[:])plt.show()機械学習の分類問題でよく用いられるアヤメ (iris)の分類に適用してみます。図3.6に示した3種類のアヤメ (versicolor、virginica、setosa) について、萼 (がく)片 (sepal)と花びら (petal)のそれぞれの幅と長さ (計4つの特徴量)をまとめた図3.7のようなデータセット iris.csv が与えられているとします。図3.8の左図に iris.csv のデータをk-means 法を用いて分類した結果、右図に正解データを示します。かなり良く一致していることがわかります。分類の精度は、サポートベクターマシーン(SVM)などの正解データを用いた教師あり学習によってさらに高めることができます。図3.4:k-means法によるクラスタリングのプログラム図3.5:クラスタリングの実行結果図3.8:アヤメの分類への適用例。左:k-means法、右:正解図3.6:3種類のアヤメと特徴量である萼(がく)片(sepal)と花びら(petal)の長さ。(https://www.snaplogic.com/machine-learning-showcase/iris-flower-classificationより) sepal_length図3.7:アヤメの特徴量のデータセット iris.csvの中身 sepal_width5.1 4.9 4.7 4.6 petal_length petal_width3.5 3 3.2 3.1 1.4 1.4 1.3 1.5 species0.2 setosa0.2 setosa0.2 setosa0.2 setosa27クラスタリングの実行例図3.2のサンプルデータに k-means 法を適用してクラスタリングを行うプログラムを図3.4に示します。最初の行でアヤメの分類例 題
元のページ ../index.html#27