首页 > 解决方案 > 在多输出随机森林回归器中获取特征重要性

问题描述

我有一个多输出随机森林回归器,我想计算它的特征重要性

正如在其他问题中所读到的,有人说要计算估计器的特征重要性。我没有定义任何估算器,如下所示,我不知道它创建了多少。这(出于某种原因)没有引发异常,但是在运行下面的代码后,它说对象 MultiOutputRegressor 没有估计器,但它对 RFR 有。如果我尝试访问模型列表中的原始 RFR,则会收到异常“元组没有属性特征重要性”

此代码抛出一个

multioutput object has no attribute feature importance
m4 = MultiOutputRegressor(RandomForestRegressor())
m5 = m4.estimator[0]
feature_importances = pd.DataFrame(m4.feature_importances_, index = X_train.columns, columns=['importance']).sort_values('importance')
print(feature_importances)
feature_importances.plot(kind = 'barh')

此代码返回

tuple object has no feature importance
m4 = models[5]
#m5 = m4.estimator[0]
feature_importances = pd.DataFrame(m4.feature_importances_, index = X_train.columns, columns=['importance']).sort_values('importance')
print(feature_importances)
feature_importances.plot(kind = 'barh')

我之前只处理过分类问题,我希望能够以类似的方式显示特征重要性

标签: pythonscikit-learn

解决方案


m5 = m4.estimator[0]

替换.estimator[0].estimators_[0] 和替换m4.feature_importances_m5.feature_importances_

打电话后

m4 = MultiOutputRegressor(RandomForestRegressor())

您应该使用适合一些数组,m4.fit(array1, array2)并且可以通过调用来查看估算器m4.estimators_。然后,您可以更进一步,并通过以下方式找到特征重要性m4.estimators_[0].feature_importances_


推荐阅读