Używam scikit-learn Random Forest Classifier i chcę wykreślić znaczenie funkcji, tak jak w tym przykładzie .
Jednak mój wynik jest zupełnie inny, w tym sensie, że odchylenie standardowe ważności cechy jest prawie zawsze większe niż samo znaczenie znaczenia (patrz załączony obraz).
Czy możliwe jest takie zachowanie, czy też popełniam błędy przy jego planowaniu?
Mój kod jest następujący:
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
z kształtem m x n
i m x 1
. Teraz powinno być jasne.
tsfresh
który pomógł mi zidentyfikować odpowiednie funkcje i zmniejszyć moje funkcje z 600+ do około 400. ! [Moje 35 najlepszych funkcji ] ( i.stack.imgur.com/0MROZ.png ) Mimo to algorytm działa dobrze dla mnie. Mam klasyfikację binarną, sukces / porażka. Praktycznie nie odnoszę żadnych fałszywych sukcesów, ale brakuje mi sporego procentu sukcesu. Wszystkie powyższe domysły wydają się rozsądne. Może się zdarzyć, że potrzebny będzie większy zestaw szkoleń i testów. Mam mniej
predictors
zwracanumpy array
odniesienie dopandas Dataframe
obiektu według jego kolumn, co jest niepoprawne, ponieważnumpy arrays
nie ma atrybutucolumns
.