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