2016-11-16 7 views
4

私は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(または同様のもの)を使用しています。事前に

おかげ

答えて

5
  1. はいあなたはそれが実行可能であるが、私はまだあなたは、少なくとも2組のCV用とテスト用の1にデータを分割することをお勧めあなたの全体のデータセットにCVことができます。

  2. .score関数はY

  3. 、与えられたXの上に(あなたが GridSearchCVをフィッティングから得る最高得点推定量である) best estimatorのスコアである documentationによる単一 float値を返すことになっています
  4. 最高のパラメータが14であることがわかった場合は、モデルでそれを使用することができますが、より多くのパラメータを指定した場合は、すべてを設定する必要があります。 (私はあなたのパラメータリストを与えていないのでそれを言っています)そして、もしこのモデルがそれほど良いものでなければ、あなたの履歴書をもう一度チェックするのは合法です。

物事が明確になります希望を:)

+0

だから、本当に、私はポイント2にclf.score(X、Y)を使用し、私が欲しいものを達成している - すべてのデータを使用してクロス検証クラシファイア。私があなたのポイント3で指摘したようにCVを二重にチェックする最良のパラメータ(はい、ただ一つあります)でcross_val_score(knn2、X、Y、cv = 5)を使用する場合は、 – browser

+0

私のポイント2とポイント3は正当な方法ですか? – browser

+0

@browserまあまあです:) – nitheism

関連する問題