公開日:2019-08-15
最終更新日:2019-08-26
最終更新日:2019-08-26
skl01-0:準備
Bobはこれまでにカレーを150食試してきた.次のデータcurry.csv
はBobのカレーに対する評価履歴データである.以下のデータをdata
ディレクトリに配置したうえで,次のコードを実行しよう.
curry.csv
:カレーに対する評価履歴データ(データIDid
,辛さspicy {0-100}
,とろみthickness {0-100}
,評価値rating {0=嫌い, 1=どちらでもない, 2=好き}
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
>>> import numpy as np >>> import pandas as pd >>> >>> # データの読込み >>> curry = pd.read_csv('data/curry.csv', index_col=0) >>> >>> feature_names = np.array(curry.columns[:-1]) >>> target_names = ['dislike', 'neutral', 'like'] >>> >>> curry_X = np.array(curry[feature_names]) >>> curry_y = np.array(curry['rating']) >>> >>> # 全データをランダムに学習データ80%とテストデータ20%に分割 >>> n = len(curry_X) >>> m = int(n * 0.2) >>> np.random.seed(0) >>> indices = np.random.permutation(n) >>> curry_X_train = curry_X[indices[:-m]] >>> curry_y_train = curry_y[indices[:-m]] >>> curry_X_test = curry_X[indices[-m:]] >>> curry_y_test = curry_y[indices[-m:]] |
skl01-1:
KNeighborsClassifier
のインポートKNeighborsClassifier
をインポートしよう.
難易度:★
ミッション | 説明 |
---|---|
1 | KNeighborsClassifier をインポートする. |
skl01-2:
KNeighborsClassifier
オブジェクトの生成KNeighborsClassifier
オブジェクトを生成しよう.
難易度:★
ミッション | 説明 |
---|---|
1 | KNeighborsClassifier() コンストラクタを呼び出す. |
2 | 生成したKNeighborsClassifier オブジェクトをknn とする. |
skl01-3:学習
学習データを基にknn
により学習しよう.
難易度:★★
ミッション | 説明 |
---|---|
1 | KNeighborsClassifier.fit() メソッドを使う. |
skl01-4:予測
knn
によりテストデータに対してラベルを予測しよう.
難易度:★★
ミッション | 説明 |
---|---|
1 | KNeighborsClassifier.predict() メソッドを使う. |
skl01-5:予測精度の取得
knn
のテストデータに対する予測精度を取得しよう.
難易度:★
ミッション | 説明 |
---|---|
1 | KNeighborsClassifier.score() メソッドを使う. |
skl01-6:学習モデルの可視化
次のコードはknn
による学習モデルを可視化するものである.次のコードをskl01_plt01.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 |
import numpy as np import pandas as pd import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.neighbors import KNeighborsClassifier # data curry = pd.read_csv('data/curry.csv', index_col=0) feature_names = np.array(curry.columns[:-1]) target_names = ['dislike', 'neutral', 'like'] curry_X = np.array(curry[feature_names]) curry_y = np.array(curry['rating']) # train knn = KNeighborsClassifier() knn.fit(curry_X, curry_y) # plot cmap_light = ListedColormap(['#CCCCFF', '#CCFFCC', '#FFCCCC']) cmap_dark = ListedColormap(['#8888FF', '#88FF88', '#FF8888']) x_min = 0 x_max = 100 y_min = 0 y_max = 100 xx, yy = np.mgrid[x_min:x_max:200j, y_min:y_max:200j] Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.pcolormesh(xx, yy, Z, cmap=cmap_light) plt.scatter(curry_X[:, 0], curry_X[:, 1], c=curry_y, cmap=cmap_dark, edgecolors='k') plt.title("curry") plt.xlabel('spicy') plt.ylabel('thickness') plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.show() |
難易度:★
ミッション | 説明 |
---|---|
1 | python3 コマンドでskl01_plt01.py を実行する. |
skl01-7:散布図行列の可視化
次のコードはデータの散布図行列を可視化するものである.次のコードをskl01_plt02.py
というファイル名で保存し,python3
コマンドで実行しよう.
1 2 3 4 5 6 7 8 9 10 11 |
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # data curry = pd.read_csv('data/curry.csv', index_col=0) # plot sns.pairplot(curry) plt.show() |
難易度:★
ミッション | 説明 |
---|---|
1 | python3 コマンドでskl01_plt02.py を実行する. |