公開日: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を実行する. |