公開日:2019-08-15
最終更新日:2019-08-26
最終更新日:2019-08-26
skl06-0:準備
次のcurry2.csvは第5章で用いたBobのカレーに対する評価履歴データである.以下のデータをdataディレクトリに配置したうえで,次のコードを実行しよう.
curry2.csv:カレーに対する評価履歴データ(データIDid,辛さspicy {0-100},とろみthickness {0-100},評価値rating {0=嫌い, 1=好き})
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
>>> import numpy as np >>> import pandas as pd >>> >>> # データの読込み >>> curry2 = pd.read_csv('data/curry2.csv', index_col=0) >>> >>> feature_names = np.array(curry2.columns[:-1]) >>> target_names = ['dislike', 'like'] >>> >>> curry2_X = np.array(curry2[feature_names]) >>> curry2_y = np.array(curry2['rating']) >>> >>> # SVCオブジェクトの生成 >>> from sklearn.svm import SVC >>> svc = SVC(kernel='rbf', C=1, gamma=0.01) |
skl06-1:
KFoldとcross_val_scoreのインポートKFoldとcross_val_scoreをインポートしよう.
難易度:★
| ミッション | 説明 |
|---|---|
| 1 | KFoldをインポートする. |
| 2 | cross_val_scoreをインポートする. |
skl06-2:
KFoldオブジェクトの生成KFoldオブジェクトを生成しよう.ここで,パラメタはn_splits=5とする.
難易度:★★
| ミッション | 説明 |
|---|---|
| 1 | KFold()コンストラクタを呼び出す. |
| 2 | n_splitsパラメタを指定する. |
| 3 | 生成したKFoldオブジェクトをk_foldとする. |
skl06-3:
cros_val_score()関数による5分割交差検証svcによりデータセットに対して5分割交差検証による5回分のスコアを取得しよう.ここで,パラメタはcv=k_fold, scoring='accuracy'とする.
難易度:★★
| ミッション | 説明 |
|---|---|
| 1 | cross_val_score()関数を使う. |
| 2 | cvパラメタを指定する. |
| 3 | scoringパラメタを指定する. |
skl06-4:
cross_val_score()関数を用いない交差検証(1)次のループ処理を実行しよう.この結果得られたscoresが,クエストskl06-3で得られたスコアと一致することを確認しよう.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> X_folds = np.array_split(curry2_X, 5) >>> y_folds = np.array_split(curry2_y, 5) >>> >>> scores = list() >>> for k in range(5): >>> X_train = list(X_folds) >>> X_test = X_train.pop(k) >>> X_train = np.concatenate(X_train) >>> y_train = list(y_folds) >>> y_test = y_train.pop(k) >>> y_train = np.concatenate(y_train) >>> scores.append(svc.fit(X_train, y_train).score(X_test, y_test)) |
難易度:★★
| ミッション | 説明 |
|---|---|
| 1 | print()関数を使う. |
skl06-5:
cross_val_score()関数を用いない交差検証(2)次のリスト内包表記で表されたコードを実行しよう.この結果得られたスコアが,クエストskl06-3で得られたスコアと一致することを確認しよう.
|
1 |
>>> [svc.fit(curry2_X[train], curry2_y[train]).score(curry2_X[test], curry2_y[test]) for train, test in k_fold.split(curry2_X)] |
難易度:★★
| ミッション | 説明 |
|---|---|
| 1 | print()関数を使う. |