【发布时间】:2021-11-07 22:37:04
【问题描述】:
我正在尝试为DecisionTreeRegressor 绘制特征重要性并将每个特征重要性映射回列名。任何人都可以建议我如何做到这一点?先感谢您。
这是我正在使用的代码:
df1=df[['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO','LSTAT' ]]
x=df1[['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO']]
y=df1['LSTAT']
from sklearn.linear_model import LinearRegression
lm_model=LinearRegression()
lm_model.fit (x,y)
#y_pred=lm_model.predict(y)
# fit the model
model = RandomForestRegressor(random_state=1)
model.fit(x_train, y_train)
yhat = model.predict(x_test)
# evaluate predictions
from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_test, yhat)
print('MAE: %.3f' % mae)
from sklearn.tree import DecisionTreeRegressor
model = DecisionTreeRegressor()
# fit the model
model.fit(x, y)
# get importance
importance = model.feature_importances_
# summarize feature importance
for i,v in enumerate(importance):
print('Feature: %0d, Score: %.5f' % (i,v))
# plot feature importance
pyplot.bar([x for x in range(len(importance))], importance)
pyplot.show()
【问题讨论】:
-
如果您编辑问题,显示几行
importance,这可能会有所帮助,并更详细地解释您将“映射”重要性返回到列名的含义。您是否希望数据框中的列名位于重要性旁边?您希望列名显示在绘图中,还是什么? -
包含一些示例数据仍然会有所帮助。您提到了 DataFrame 和列,但这些似乎都没有出现在您提供的代码 sn-p 中(您也没有标记 DataFrame 库)。一般来说,有一个从
import到show()的小程序是有帮助的,可以复制到一个干净的工作区并运行。 -
您是否尝试将重要性与功能相对应?
-
是的,没错
-
如果没有数据,这个问题就无法重现。始终提供minimal reproducible example代码、数据、错误、当前输出和预期输出,如formatted text。如果相关,绘图图像是可以的。
标签: python matplotlib scikit-learn