モデルの評価
メニューを表示するにはスワイプしてください
予測モデルを構築する際には、実際の予測に使用する前にどれだけうまく機能するかを判断することが重要です。
モデル評価は、モデルがどれだけ正確に予測を行うかを測定します。.score()メソッドはこの評価を提供します。
トレーニングセットでのパフォーマンス評価は誤解を招く可能性があり、モデルは既に見たデータに対してより良い結果を出す傾向があります。現実的な評価を得るには、未見データで評価を行う必要があります。
正式には、目標は汎化性能の高いモデルを作成することです。
汎化とは、モデルが学習に使用したデータだけでなく、新しい未見データに対しても効果的に機能する能力です。これは、モデルの予測がトレーニングデータセット外の実世界のシナリオにどれだけ正確に適用できるかを測定します。
これは、データセットをランダムに分割して、モデルの学習用のトレーニングセットと評価用のテストセットの2つの部分に分けることで実現できます。
トレーニングセットを使用してモデルを学習し、その後テストセットで評価:
model.fit(X_train, y_train)
print(model.score(X_test, y_test))
データをランダムに分割するには、train_test_split()モジュールのsklearn.model_selection関数を使用。
通常、テストセットのサイズはデータセットによって異なる:小規模データセットでは25~40%、中規模では10~30%、大規模では10%未満。
この例では、インスタンス数が342(小規模データセット)のため、テストセットに**33%**を割り当て:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
ここで、X_trainとy_trainはトレーニングセット、X_testとy_testはテストセットを表す。
123456789101112131415import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Train-test split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) # Initialize and train a model knn5 = KNeighborsClassifier().fit(X_train, y_train) # Trained 5 neighbors model knn1 = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train) # Trained 1 neighbor model # Print the scores of both models print('5 Neighbors score:',knn5.score(X_test, y_test)) print('1 Neighbor score:',knn1.score(X_test, y_test))
モデルは .fit(X_train, y_train) を用いて訓練データセットで学習され、.score(X_test, y_test) を用いてテストデータセットで評価されます。
train_test_split() はデータをランダムに分割するため、実行ごとに訓練セットとテストセットが異なり、スコアも変動します。データセットが大きくなると、これらのスコアはより安定します。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください