2017-11-27 10 views
0

クロスバリデーション(KFold)を使用する予定がある場合でも、データセットをトレーニングデータとテストデータに分割し、トレーニングセットでのみトレーニング(クロスバリデーションを含む)を実行する必要がありますか?それとも、CVが私のためにすべてを行いますか?例えば。まず、train_test_splitを実行してからクロスバリデーションを使用する必要がありますか?

オプション1

X_train, X_test, y_train, y_test = train_test_split(X,y) 
clf = GridSearchCV(... cv=5) 
clf.fit(X_train, y_train) 

オプション2

clf = GridSearchCV(... cv=5) 
clf.fit(X y) 
+0

CVはあなたのためにすべてを行います。 cvに必要なパラメータを指定するだけです。リファレンス[GridSearchCV](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html#sklearn-model-selection-gridsearchcv)と[KFold](http:// scikit-learn .org/stable/modules/generated/sklearn.model_selection.KFold.html#sklearn.model_selection.KFold)これはGridSearchCVのCVで使用されています –

+1

@SandeepKadapaですが、モデル*はあなたのために行います。これは、エラーを最小限に抑えるためにパラメータを最適化するときに、モデルエラーを推定する際の相互検証としての悪い習慣です。詳細については、[ここ](https://stats.stackexchange.com/questions/224287/cross-validation-misuse-reporting-performance-for-the-best-hyperparameter-value/224290#224290)を参照してください。 – ncfirth

答えて

1

CVは良いですが、それはそのままデータ上の独立したスコアの推定を提供するために、電車/テスト・スプリットを持っている方が良いでしょう。 CVとテストデータに同じスコアが表示されている場合は、列車/テストの分割フェーズとCVをデータ全体にドロップして、わずかに優れたモデルスコアを得ることができます。しかし、あなたのスプリットとCVスコアが一貫していることを確かめる前にそれをしないでください。

関連する問題