#python #matplotlib #plot #random-forest
#python #matplotlib #график #случайный лес
Вопрос:
Я сделал выбор функций в моем фрейме данных на основе этого: https://towardsdatascience.com/feature-selection-using-random-forest-26d7b747597f
в части 7 для построения графика распределения важности предоставляется этот код:
pd.series(sel.estimator_,feature_importances_,.ravel()).hist()
я думаю, что это должно быть так, чтобы не было синтаксической ошибки:
pd.series(sel.estimator_,feature_importances_.ravel()).hist()
и я получил эту ошибку:
Ошибка атрибута: модуль ‘pandas’ не имеет атрибута ‘series’
и я думаю, что estimator_ и feature_importances_ также не определены. Есть ли какой-либо способ отладить эту строку кода?
Ответ №1:
pd.Series(sel.estimator_.feature_importances_.ravel()).hist()
Это «Серия», а не «series»
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.hist.html
Построение графика важности функций
importances = sel.estimator_.feature_importances_
indices = np.argsort(importances)[::-1]
# X is the train data used to fit the model
plt.figure()
plt.title("Feature importances")
plt.bar(range(X.shape[1]), importances[indices],
color="r", align="center")
plt.xticks(range(X.shape[1]), indices)
plt.xlim([-1, X.shape[1]])
plt.show()
Это должно отображать гистограмму, подобную приведенной ниже, где ось x — индексы функций, а ось y — важность функций. Функции отсортированы в порядке важности.
Комментарии:
1. Ошибка имени: имя ‘feature_importances_’ не определено
2. @CFD Обычно feature_importances_ является членом классификаторов на основе дерева / леса. Проверьте, является ли он членом sel в вашем случае, т.е. sel.feature_importances_
3. Это не так. с помощью sel.feature_importances_ получена эта ошибка: AttributeError: объект ‘SelectFromModel’ не имеет атрибута ‘feature_importances_
4. @CFD Сейчас я это исправил, веб-сайт, на котором вы основывали свой код, очень плохо вычитал корректуру: ( Не забудьте использовать plt.show() для отображения гистограммы
5. Спасибо, это сработало. Но этот график не показывает ничего особенного! (обновил вопрос изображением графика)