Ich verwende den Random Forest Classifier von scikit-learn und möchte die Wichtigkeit von Features wie in diesem Beispiel darstellen .
Mein Ergebnis ist jedoch völlig anders, in dem Sinne, dass die Standardabweichung der Merkmalsbedeutung fast immer größer ist als die Merkmalsbedeutung selbst (siehe beigefügtes Bild).
Kann man sich so verhalten, oder mache ich Fehler beim Plotten?
Mein Code ist der folgende:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
clf.fit(predictors.values, outcome.values.ravel())
importance = clf.feature_importances_
importance = pd.DataFrame(importance, index=predictors.columns,
columns=["Importance"])
importance["Std"] = np.std([tree.feature_importances_
for tree in clf.estimators_], axis=0)
x = range(importance.shape[0])
y = importance.ix[:, 0]
yerr = importance.ix[:, 1]
plt.bar(x, y, yerr=yerr, align="center")
plt.show()
pandas DataFramemit Form m x nund m x 1. Es sollte jetzt klar sein.
tsfreshdas ich relevante Merkmale identifiziert geholfen und schneide meine Funktionen von 600+ auf rund 400 ! [Meine Top-35 - Features ] ( i.stack.imgur.com/0MROZ.png ) mit diesem Selbst des Algorithmus eines guten Leistung für mich. Ich habe eine binäre Klassifikation, Erfolg / Misserfolg. Ich bekomme praktisch keine falschen Erfolge, aber ich vermisse einen beträchtlichen Prozentsatz des Erfolgs. Alle obigen Vermutungen scheinen vernünftig. Es könnte der Fall sein, dass ein größeres Trainings- und Test-Set erforderlich ist. Ich habe weniger

predictorsgibt ein zurück, aufnumpy arraydas Siepandas Dataframedurch seine Spalten verweisen. Dies ist falsch, danumpy arraysdas Attribut nicht vorhanden istcolumns.