1

私はMachine Learningの初心者です。私は、49の機能に基づいてバイナリ分類を行っています。最初の7つの機能はfloat64タイプです。次の18本の特徴は、マルチクラスタイプであり、残りは、私は上記の出力は多数のフィーチャのscikit-learnのフィーチャー選択

[ 1.20621145e-01 3.71627370e-02 1.82239903e-05 5.40071522e-03 
    1.77431957e-02 8.40569119e-02 1.74562937e-01 5.00468692e-02 
    7.60565780e-03 1.78975490e-01 4.30178009e-03 7.44005584e-03 
    3.46208406e-02 1.67869557e-03 2.94863800e-02 1.97333741e-02 
    2.53116233e-02 1.30663822e-02 1.14032351e-02 3.98503442e-02 
    3.48701630e-02 1.93366039e-02 5.89310510e-03 3.17052801e-02 
    1.47389909e-02 1.54041443e-02 4.94699885e-03 2.27428191e-03 
    1.27218776e-03 7.39305898e-04 3.84357333e-03 1.59161363e-04 
    1.31479740e-03 0.00000000e+00 5.24038196e-05 9.92543746e-05 
    2.27356615e-04 0.00000000e+00 1.29338508e-05 4.98412036e-06 
    2.97697346e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 
    0.00000000e+00 1.49018368e-05 0.00000000e+00 0.00000000e+00 
    0.00000000e+00] 

ようであった

model = ExtraTreesClassifier() 
model.fit(x_new, y) 
print(model.feature_importances_) 

次のコードを使用して特徴選択を行う、すなわち0または1バイナリクラスタイプでありますそれらのどれも有意ではなかった私は、すべての機能を含む出力

[ 0.06456545 0.01254671 0.32220959 0.00552464 0.02017919 0.07311639 
    0.00716867 0.06964389 0.04797752 0.06608452 0.02915153 0.02044009 
    0.05146265 0.05712569 0.09264365 0.01252251 0.01899865 0.02863864] 

がですべての機能の貢献度を低下させたマルチクラスタイプと、次の18の機能のサブセット上でそれを試してみましたどのようなものを排除することはできません。上記の結果の推論はどうですか?あなたが「それらのどれも有意ではなかった」と言っていますが、機能の重要性から見ているスコアはp値ではないのPython 3でScikit-学び

答えて

1

を使用して

。これは、基本的には、データを分割して正規化することで、そのフィーチャがどれほど有用であるかをカウントしています。

各フィーチャの相対値を比較する必要があります。機能選択をパイプラインの一部として行うには、SelectFromModelを使用することを検討してください。 sklearnでhttp://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectFromModel.html

1

次のように、またジニ重要として知らfeature_importances_が測定される:ツリーベースモデルで特定の機能を、その重要性は、ツリー内のそのノードに到達するサンプルの確率です。

値の範囲は0〜1です。値0は、モデルの出力がフィーチャにまったく依存しないことを意味し、1はモデルの出力がフィーチャに直接関連付けられていることを意味します。

機能の選択には、thisというSelectFromModelという関数を使用して、しきい値を指定することができます。重要度がしきい値を超える機能が選択されます。

チェックthis機能の重要度の計算方法の詳細については、anwserを参照してください。

1

uが自動的にクロス検証と分類におけるその重要性を見つけることによって、最高の機能を選択します

model=ExtraTreesClassifier() 
model=RFECV(model,cv=3) 
model.fit(features_train,label_train) 

このsklearn.feature_selection.RFECV

を使用することができます。

モデルは、属性

n_features_有する:クロスバリデーションを有する選択された特徴の数。

support_:選択したフィーチャのマスク。インデックスに基づいてTrueおよびFalseの配列を返します。考慮されているものは真であり、放置されたものは偽である。

ランキング:機能ランキング。考慮されているものはランク1を与え、他の値を休む。

参照:http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFECV.html#sklearn.feature_selection.RFECV

関連する問題