使用 Random Forest 对分类进行网格搜索时,出现此错误。
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和决策树的工作方式相同(当然是不同的参数)。
预先感谢
答案 0 :(得分: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
答案 1 :(得分:0)
替换此:
gs3 = rf2.fit(X_train1, y_train1)
通过:
gs3.fit(X_train1, y_train1)
然后您将可以使用:
gs3.best_params_
您的错误是由于您将gs3
重新分配给RandomForest()
调用而造成的,因此gs3
不再是GridSearchCV
对象。