公開日:2019-08-15
最終更新日:2019-08-26
最終更新日:2019-08-26
skl08-0:準備
次のデータkyoto.csv
は京都の観光地で発信されたつぶやき履歴データである.つぶやきには経度・緯度で表される位置情報が付与されている.以下のデータをdata
ディレクトリに配置したうえで,次のコードを実行しよう.
kyoto.csv
:つぶやき履歴データ(データIDid
,経度lng
,緯度lat
,場所place
)
1 2 3 4 5 6 7 8 9 10 |
>>> import numpy as np >>> import pandas as pd >>> >>> # データの読込み >>> kyoto = pd.read_csv('data/kyoto.csv', index_col=0) >>> >>> feature_names = np.array(kyoto.columns[:-1]) >>> >>> kyoto_X = np.array(kyoto[feature_names]) >>> kyoto_y = np.array(kyoto['place']) |
skl08-1:
KMeans
のインポートKMeans
をインポートしよう.
難易度:★
ミッション | 説明 |
---|---|
1 | KMeans をインポートする. |
skl08-2:
KMeans
オブジェクトの生成KMeans
オブジェクトを生成しよう.ここで,パラメタはn_clusters=n_neighbors
とする.
1 |
>>> n_neighbors = 9 |
難易度:★
ミッション | 説明 |
---|---|
1 | KMeans() コンストラクタを呼び出す. |
2 | n_clusters パラメタを指定する. |
3 | 生成したKMeans オブジェクトをk_means とする. |
skl08-3:学習
学習データを基にk_means
により学習しよう.
難易度:★★
ミッション | 説明 |
---|---|
1 | KMeans.fit() メソッドを使う. |
skl08-4:クラスタラベルの予測
k_means
により予測されたラベルを取得しよう.
難易度:★
ミッション | 説明 |
---|---|
1 | k_means.labels_ 属性を使う. |
skl08-5:学習モデルの可視化
次のコードはk_means
による学習モデルを可視化するものである.次のコードをskl08_plt.py
というファイル名で保存し,python3
コマンドで実行しよう.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.cluster import KMeans # data kyoto = pd.read_csv('data/kyoto.csv', index_col=0) feature_names = np.array(kyoto.columns[:-1]) kyoto_X = np.array(kyoto[feature_names]) kyoto_y = np.array(kyoto['place']) # train n_neighbors = 9 k_means = KMeans(n_clusters=n_neighbors) k_means.fit(kyoto_X) kyoto_y_pred = k_means.labels_ # plot cmap_light = ListedColormap(['#FFCCCC', '#CCFFCC', '#CCCCFF', '#FFFFCC', '#CCFFFF', '#FFCCFF', '#888888', '#AAAAAA', '#CCCCCC']) cmap_dark = ListedColormap(['#FF0000', '#00FF00', '#0000FF', '#FFFF00', '#00FFFF', '#FF00FF', '#666666', '#999999', '#AAAAAA']) x_min = 135.7 x_max = 135.8 y_min = 34.95 y_max = 35.05 xx, yy = np.mgrid[x_min:x_max:200j, y_min:y_max:200j] Z = k_means.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.pcolormesh(xx, yy, Z, cmap=cmap_light) plt.scatter(kyoto_X[:, 0], kyoto_X[:, 1], c=kyoto_y_pred, cmap=cmap_dark, edgecolors='k') plt.title("kyoto") plt.xlabel('lng') plt.ylabel('lat') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.show() |
難易度:★
ミッション | 説明 |
---|---|
1 | python3 コマンドでskl08_plt.py を実行する. |