私はscikit-learn Random Forest Classifierを使用しており、この例のように機能の重要度をプロットします。
ただし、機能の重要度の標準偏差は、機能の重要度自体よりも常に大きいという意味で、私の結果は完全に異なります(添付画像を参照)。
このような動作をすることは可能ですか、それをプロットするときにいくつかの間違いをしていますか?
私のコードは次のとおりです。
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
、形状m x n
との2つm x 1
です。今ははっきりしているはずです。
tsfresh
関連する機能を特定し、600 +から約400まで機能を削減するのに役立つパッケージがあります。![My top 35 features ](i.stack.imgur.com/0MROZ.png)これでも、アルゴリズムはうまく機能しています。私のために。成功/失敗の2種類の分類があります。事実上、偽りの成功はありませんが、成功のかなりの割合を逃しています。上記の推測はすべて合理的と思われます。より大きなトレーニングとテストのセットが必要な場合があります。私は少ない
predictors
返します。これは、属性がないために正しくありません。numpy array
pandas Dataframe
numpy arrays
columns