我正在努力从我的 RandomForestRegressor 中提取特征重要性,我得到一个:
属性错误:"网格搜索CV"对象没有属性 "feature_importances_"。
有谁知道为什么没有属性?根据文档,应该存在此属性吗?
完整代码:
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import GridSearchCV
#Running a RandomForestRegressor GridSearchCV to tune the model.
parameter_candidates = {
'n_estimators' : [650, 700, 750, 800],
'min_samples_leaf' : [1, 2, 3],
'max_depth' : [10, 11, 12],
'min_samples_split' : [2, 3, 4, 5, 6]
}
RFR_regr = RandomForestRegressor()
CV_RFR_regr = GridSearchCV(estimator=RFR_regr, param_grid=parameter_candidates, n_jobs=5, verbose=2)
CV_RFR_regr.fit(X_train, y_train)
#Predict with testing set
y_pred = CV_RFR_regr.predict(X_test)
#Extract feature importances
importances = CV_RFR_regr.feature_importances_
您正在尝试在 GridSearchCV 对象上使用该属性。它不存在那里。您实际需要做的是访问完成网格搜索的估计器。
通过以下方式访问属性:
importances = CV_RFR_regr.best_estimator_.feature_importances_
///
clf = 随机森林分类器()clf.fit(df.drop('name', axis=1), df['name'])
图(图尺寸=(10,10))plt.bar(df.drop('name', axis=1).columns, height=clf.feature_importances_, bottom = 0, width=0.8)plt.xticks(rotation=80)
hight_rate_col = df.drop('name', axis=1).columns[clf.feature_importances_> 0.1]x_train_rate, x_test_rate, y_train_rate, y_test_rate = train_test_split(df[hight_rate_col], df['name'])