私はsklearnのKNearestNeighborsを使って学習を行っています。 データセットを30,000回の観測データセット( )からトレーニング(70%)とテスト(30%)に分割しました。しかし、私は を理解することができませんなぜ同じモデルを評価する2つの方法は、そのような異なる結果をもたらすでしょう。sklearnからのcross_validationの予期しない結果
より具体的には、テストセットのr^2値を一度に取得すると、 テストセットでkFoldクロス検証 を実行した場合よりもかなり高いスコア(〜0.70)が得られます。正確な 同じモデルがまったく同じデータでテストされている場合、これらのスコアは大きく異なるのはなぜですか?私は 何か間違っていると確信していますが、私は何の手掛かりがありません。助けてください!
r2_scorer = make_scorer(r2_score)
clf = neighbors.KNeighborsRegressor()
clf = clf.fit(X_train,y_train)
score1 = r2_score(y_test,clf.predict(X_test))
> 0.68777300248206585
kfold = model_selection.KFold(n_splits=10, random_state=42)
scores2 = cross_val_score(clf,X_test,y_test,cv = kfold, scoring = r2_scorer)
scores2
>array([ 0.05111285, 0.65697228, 0.57468009, 0.6706573 , 0.46720042,
0.3763054 , 0.56881947, 0.32569462, -0.16607888, -0.6862521 ])
scores2.mean()
> 0.28391114469744039
scores2.std()
> 0.4118551721575503
クロスバリデーションは同じモデルを使用しないため、検証のために新しいモデルを作成しています。 – jacoblaw
ああ、私は最終的に私のエラーを参照してください。ありがとうございました – ata
@ata私はツアー結果を説明し、あなたの主要な質問に答える答えを掲示しました – sera