Ben kullanıyorum Rastgele Orman Sınıflandırıcı scikit-öğrenme ve böyle olduğu gibi özellik önem çizmek istiyorum bu örnekte .
Ancak benim sonucum tamamen farklıdır, çünkü özellik önemi standart sapmanın neredeyse her zaman özellik öneminden daha büyüktür (bkz. Ekli resim).
Böyle bir davranışa sahip olmak mümkün mü, ya da onu çizerken bazı hatalar mı yapıyorum?
Kodum şudur:
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
şekil m x n
ve m x 1
. Şimdi açık olmalı.
tsfresh
İlgili özellikleri tanımlamama ve özellikleri 600+'dan 400'e düşürmeme yardımcı olan bir paket var . ! [En iyi 35 özelliğim ] ( i.stack.imgur.com/0MROZ.png ) Bununla bile algoritma iyi performans gösteriyor benim için. Bir ikili sınıflandırma, başarı / başarısızlık var. Neredeyse yanlış bir başarı elde edemiyorum ama büyük bir başarı yüzdesini özlüyorum. Yukarıdaki tüm tahminler makul görünüyor. Daha büyük bir eğitim ve test seti olması gerekebilir. Daha
predictors
döndürür .numpy array
pandas Dataframe
numpy arrays
columns