Я використовую випадковий класифікатор лісового науку і хочу вивчити важливість функції, наприклад, у цьому прикладі .
Однак мій результат зовсім інший, в тому сенсі, що значення важливості функції майже завжди більше, ніж значення функції (див. Додане зображення).
Чи можна мати таку поведінку, чи я роблю деякі помилки, будуючи це?
Мій код такий:
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
і m x 1
. Це має бути зрозуміло зараз.
tsfresh
який допоміг мені визначити відповідні функції та скоротити мої функції з 600+ до приблизно 400. [Мої найбільші 35 особливостей ] ( i.stack.imgur.com/0MROZ.png ) Навіть при цьому алгоритм працює добре для мене. У мене є бінарна класифікація, успіх / невдача. У мене практично немає помилкових успіхів, але я пропускаю значні відсотки успіху. Усі здогадки вище здаються розумними. Це може бути випадок, коли потрібно розширити навчальний і тестовий набір. У мене менше
predictors
повертає посилання, наnumpy array
яке ви посилаєтесь наpandas Dataframe
об'єкт, його стовпцями, що невірно, оскількиnumpy arrays
вони не мають атрибутаcolumns
.