私はSciKit-Learnを使用して最初のKNNクラシファイアを実行しようとしています。私はユーザーガイドと他のオンラインの例に従ってきましたが、わかりやすいことがいくつかあります。この記事のために、私はあなたがトレーニングセット、検証セットをしたいと言っているようだ読んだ機械学習のページへのほとんどの導入では)次Scikit-learnのKNNクラシファイアでグリッド検索パラメータと交差検証されたデータセット
X =データ Y =ターゲット
1を使用することができます、テストセット。私が理解していることから、クロスバリデーションでは、トレーニングセットと検証セットを組み合わせてモデルを訓練することができます。テストセットでテストしてスコアを取得する必要があります。しかし、多くの場合、データセット全体を検証し、CVスコアを正確度として報告できることを論文で見てきました。私はあなたが別のデータでテストしたいと思う理想の世界では理解しますが、これは正当なものであるならば、私はそれらのスコア
2)だから、
は私が定義するプロセスを開始し、私のデータセット全体にクロス検証し、報告したいと思います私のKNN分類器Iは
012を言うならば、私は今clf = GridSearchCV(knn, parameters, cv=5)
を使用して最高のN_NEIGHBORSを検索
knn = KNeighborsClassifier(algorithm = 'brute')
を次のように
clf.fit(X,Y)
私は
clf.best_params_
を使用して、最良のパラメータを確認することができますし、私はスコア
clf.score(X,Y)
を得ることができます。しかし - 、私はそれを理解し、このモデルを検証交差していませんそれは1点しか与えないので?
私はclf.best_params_ = 14見てきた場合は、今私は
knn2 = KNeighborsClassifier(n_neighbors = 14, algorithm='brute')
cross_val_score(knn2, X, Y, cv=5)
に行くことができる今、私は、データがクロスが検証されている知っているが、clf.fitを使用することが正当であるかどうかは知りません最良のパラメータを見つけ、新しいknnモデルでcross_val_scoreを使用しますか?私は '正しい' 方法はX_train、X_test、Y_train、Y_test、 スケールトレインセットに
スプリットを次のようになりますやっていることを理解
3) - >セット
knn = KNeighborsClassifier(algorithm = 'brute')
clf = GridSearchCV(knn, parameters, cv=5)
clf.fit(X_train,Y_train)
clf.best_params_
をテストするために変換を適用
、その後、私はこの場合
clf.score(X_test,Y_test)
スコアを得ることができ、最高のパラメータを使用して算出されるスコアは何ですか?
これが意味をなされることを望みます。私は投稿することなくできる限り多くを見つけようとしてきましたが、いくつかの直接的な回答を得ることがより簡単になると思っています。
私の頭では、データセット全体を使ってクロス検証されたスコアを取得しようとしていますが、パラメータを微調整するためにgridsearch(または同様のもの)を使用しています。事前に
おかげ
だから、本当に、私はポイント2にclf.score(X、Y)を使用し、私が欲しいものを達成している - すべてのデータを使用してクロス検証クラシファイア。私があなたのポイント3で指摘したようにCVを二重にチェックする最良のパラメータ(はい、ただ一つあります)でcross_val_score(knn2、X、Y、cv = 5)を使用する場合は、 – browser
私のポイント2とポイント3は正当な方法ですか? – browser
@browserまあまあです:) – nitheism