K分割検証
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 37/58。
この章では、スコアの信頼性を高めます。この章を終える頃には、次のようなグラフを使ってモデルを調整できるようになります。
1回のテスト分割では、たまたま良い結果になることがあります。K分割交差検証では、行を5つの分割に分け、各分割を順番にテストに使い、残りで学習します:
1回の呼び出しで5回すべて実行します。ここではアヤメの花を対象にした決定木を使います。
from sklearn.model_selection import cross_val_score
tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")これは次のように出力されます:
[0.967 0.967 0.9 0.967 1. ]
0.960 0.033平均値をスコアとして報告し、標準偏差をスコアの揺れの大きさとして報告します。
チャレンジ
中級コンブチャ醸造所では、5つの検査値からバッチの腐敗を予測します。このモデルの安定性はどの程度でしょうか?プログラムは分割数を読み込みます。スターターコードでデータとモデルを作成します。
- その分割数でモデルを交差検証します。
- 各分割の正解率を出力し、その後、平均と標準偏差を小数点以下3桁で出力します。
- 最も低い分割の番号を、1から数えて出力します。
別のバッチと4の場合:
Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3自分で試してみよう
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
n_folds = int(input())
# 以下の行は変更しないでください:コンブチャの製造バッチは240、各バッチの検査値は5つです。ラベル1は腐敗を意味します
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)
# 以下にコードを書いてください
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ