1

Ich bin ein Anfänger in Machine Learning. Ich mache eine binäre Klassifizierung basierend auf 49 Funktionen. Die ersten 7 Funktionen sind vom float64-Typ. Weiter 18 Funktionen sind von Multiclass Typ und der Rest ist von binärem Klassentyp dh 0 oder 1 I Feature-Auswahl durchgeführt mit dem folgenden CodeFeature Auswahl in Scikit-lernen für eine große Anzahl von Funktionen

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

Der Ausgang der oben

[ 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] 

Wie war keiner von ihnen waren signifikant ich versuchte es auf einer Untergruppe von 18 Merkmalen des Klassenkombinationen Typ und die folgende war der Ausgang

[ 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] 

einschließlich aller Merkmale Beitrag jedes Merkmal verschlechtert in die Klassifizierung kann aber keine eliminieren. Sollte ich die Features mit relativ niedrigerer Punktzahl eliminieren? Was ist der Schluss der obigen Ergebnisse?

Mit Scikit-Learn mit Python 3.

Antwort

1

Sie sagen, „keiner von ihnen signifikant waren“, aber die Noten Sie Funktion Bedeutung sehen, ist nicht p-Werte. Es wird im Grunde genommen gezählt, wie nützlich ein bestimmtes Feature beim Teilen der Daten und Normalisieren war, so dass alle Feature-Bedeutungen 1 ergeben.

Sie sollten die relativen Werte jedes Features vergleichen. Ziehen Sie die Verwendung von SelectFromModel in Betracht, um die Featureauswahl als Teil einer Pipeline auszuführen. http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectFromModel.html

1

In sklearn, feature_importances_ auch als Gini- Bedeutung bekannt wird wie folgt gemessen: Für eine gegebene Funktion in einer baumbasierten Modell, dessen Bedeutung der Wahrscheinlichkeit der Proben ist, dass der Knoten in dem Baum erreicht.

Der Wert variiert zwischen 0 und 1. Der Wert 0 bedeutet, dass die Ausgabe des Modells nicht von der Funktion abhängt und 1 bedeutet, dass die Ausgabe des Modells direkt mit der Funktion verknüpft ist.

Für die Funktionsauswahl können Sie die Funktion this namens SelectFromModel verwenden, mit der Sie einen Schwellenwert festlegen können. Die Features mit Wichtigkeitswerten über dem Schwellenwert werden ausgewählt.

Überprüfen Sie this anwser für weitere Details darüber, wie die Funktion Wichtigkeit berechnet wird.

1

u kann sklearn.feature_selection.RFECV verwenden

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

Dies wird die besten Eigenschaften von Kreuzvalidierung und der Suche nach ihrer Bedeutung in der Klassifizierung automatisch auswählen.

Das Modell hat Attribute

n_features_: Die Anzahl der ausgewählten Merkmale mit Kreuzvalidierung.

support_: Die Maske der ausgewählten Funktionen. Gibt basierend auf dem Index ein Array von True und False an. Die betrachteten sind True und Neglected sind falsch

ranking_: Das Feature-Ranking. Die Überlegten geben Rang 1 und ruhen andere Werte.

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

Verwandte Themen