RFECV
と機能選択をしようとしましたが、その度に異なる結果が出ています。クロスバリデーションはサンプルXをランダムなチャンクまたはシーケンシャルな確定的なチャンク?sklearn.feature_selection.RFECVが実行ごとに異なる結果を返すのはなぜですか
また、grid_scores_
とscore(X,y)
のスコアが異なるのはなぜですか?なぜスコアがマイナスになるのでしょうか?
RFECV
と機能選択をしようとしましたが、その度に異なる結果が出ています。クロスバリデーションはサンプルXをランダムなチャンクまたはシーケンシャルな確定的なチャンク?sklearn.feature_selection.RFECVが実行ごとに異なる結果を返すのはなぜですか
また、grid_scores_
とscore(X,y)
のスコアが異なるのはなぜですか?なぜスコアがマイナスになるのでしょうか?
クロス検証では、サンプルXをランダムなチャンクまたはシーケンシャルな確定的なチャンクに分割しますか?
CVは、デフォルトでデータを確定的なチャンクに分割します。この動作を変更するには、シャッフルパラメータをTrueに設定します。
しかし、RFECV Yが
(http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html)バイナリまたはマルチクラスである場合、これは、それが各折り目が同じ(またはクラスのほぼ同じ比を有することをデータは、分割することを意味sklearn.model_selection.StratifiedKFoldを使用)。これを行うために、各折りたたみの正確なデータは、CVの異なる反復でわずかに変化する可能性があります。ただし、これによりデータが大幅に変更されることはありません。
cvパラメータを使用してCVイテレータを渡す場合は、ランダムな状態を指定して分割を修正できます。ランダム状態は、アルゴリズムによって行われるランダムな決定にリンクされます。同じランダムな状態を毎回使用すると、同じ動作が保証されます。
また、grid_scores_とscore(X、y)のスコアが異なるのはなぜですか?
grid_scores_は、クロスバリデーションスコアの配列です。 grid_scores_ [i]は、i番目の反復のクロスバリデーションスコアです。これは、最初のスコアがすべてのフィーチャのスコアであり、2番目のフィーチャがフィーチャの1つのセットが削除されたときのスコアであることを意味します。それぞれ削除されるフィーチャの数は、stepパラメータの値と同じです。これはデフォルトでは1です。
score(X、y)は最適なフィーチャ数を選択し、それらのフィーチャのスコアを返します。
なぜスコアがマイナスになるのですか?
これは、使用している推定量とスコアラーによって異なります。スコアラーを設定していない場合、RFECVは見積もりにデフォルトのスコア関数を使用します。一般的に、これは精度ですが、あなたの特定のケースでは、負の値を返すものかもしれません。
また、分割を修正するために使用できるStratifiedKFoldのrandom_stateパラメータを追加してください –
これらの質問に具体的に答えられるように、コードをご記入ください。 – amanbirs