属性错误:“RandomForestRegressor”对象没有属性“best_params_”
Posted
技术标签:
【中文标题】属性错误:“RandomForestRegressor”对象没有属性“best_params_”【英文标题】:Attribute Error: 'RandomForestRegressor' object has no attribute 'best_params_' 【发布时间】:2020-03-13 00:13:57 【问题描述】:我在使用随机森林为我的分类进行网格搜索时遇到此错误。
from sklearn.ensemble import RandomForestRegressor
rf2 = RandomForestRegressor(random_state = 50)
rf2.fit(X_train1, y_train1)
### Grid Search ###
num_leafs = [1, 5, 10, 20, 50, 100]
parameters3 = ['n_estimators' : range(100,800,20),
'max_depth': range(1,20,2),
'min_samples_leaf':num_leafs
]
gs3 = GridSearchCV(estimator=rf2,
param_grid=parameters3,
cv = 10,
n_jobs = -1)
gs3 = rf2.fit(X_train1, y_train1)
gs3.best_params_ # <- thats where I get the Error
我不知道问题所在,因为它与 SVM 和决策树的工作方式相同(当然参数不同)。
提前致谢
【问题讨论】:
【参考方案1】:好吧,您不适合 GridSearch
对象,而是适合 model
(rf2),然后将其分配给 gs3
参数。
你有:
gs3 = GridSearchCV(estimator=rf2,
param_grid=parameters3,
cv = 10,
n_jobs = -1)
gs3 = rf2.fit(X_train1, y_train1)
gs3.best_params_ # <- thats where I get the Error
您需要:
gs3 = GridSearchCV(estimator=rf2,
param_grid=parameters3,
cv = 10,
n_jobs = -1)
gs3.fit(X_train1, y_train1) # fit the GridSearchCV object
gs3.best_params_ # <- thats where I get the Error
【讨论】:
【参考方案2】:替换这个:
gs3 = rf2.fit(X_train1, y_train1)
这样:
gs3.fit(X_train1, y_train1)
然后你就可以使用:
gs3.best_params_
您的错误是由于您将gs3
重新分配给RandomForest()
调用,因此gs3
不再是GridSearchCV
对象。
【讨论】:
谢谢,这就是问题所在!以上是关于属性错误:“RandomForestRegressor”对象没有属性“best_params_”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决属性错误'float'对象在python中没有属性'split'?
无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”