Saya menggunakan scikit-learn Random Forest Classifier dan saya ingin merencanakan kepentingan fitur seperti dalam contoh ini .
Namun hasil saya benar-benar berbeda, dalam arti fitur penting standar deviasi hampir selalu lebih besar daripada fitur penting itu sendiri (lihat gambar terlampir).
Mungkinkah memiliki perilaku seperti itu, atau apakah saya melakukan beberapa kesalahan ketika merencanakannya?
Kode saya adalah sebagai berikut:
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
dengan bentuk m x n
dan m x 1
. Itu harus jelas sekarang.
tsfresh
yang membantu saya mengidentifikasi fitur-fitur yang relevan dan memotong fitur saya dari 600+ menjadi sekitar 400. ! [Fitur top 35 saya ] ( i.stack.imgur.com/0MROZ.png ) Bahkan dengan ini algoritma berkinerja baik untuk saya. Saya memiliki klasifikasi biner, sukses / gagal. Saya hampir tidak mendapatkan keberhasilan yang salah, tetapi saya kehilangan sebagian besar kesuksesan. Semua tebakan di atas tampak masuk akal. Bisa jadi perlu ada pelatihan dan pengujian yang lebih besar. Saya memiliki lebih sedikit
predictors
mengembalikannumpy array
yang Anda referensikan kepandas Dataframe
objek oleh kolomnya yang salah karenanumpy arrays
tidak memiliki atributcolumns
.