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 DataFrame
mit Form m x n
und m x 1
. Es sollte jetzt klar sein.
tsfresh
das 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
predictors
gibt ein zurück, aufnumpy array
das Siepandas Dataframe
durch seine Spalten verweisen. Dies ist falsch, danumpy arrays
das Attribut nicht vorhanden istcolumns
.