2015-12-09 23 views
2

我正在使用网格搜索来调整我的模型(随机森林,线性回归等)的参数。所以我保存gs对象grid_searchesAttributeError:'GridSearchCV'对象没有属性'best_estimator_'

gs = GridSearchCV(model, params, cv=cv, n_jobs=n_jobs, 
        verbose=verbose, scoring="mean_squared_error", refit=refit) 
gs.fit(trainX,trainy) 
grid_searches[key] = gs 

然后,我要访问的最佳估计为每个模式,以作出预测:

def predict(testX, testy, grid_searches): 
    keys = models.keys() 
    for k in keys: 
     print("Predicting with %s." % k) 
     yhat = grid_searches[k].best_estimator_.predict(testX) 

的错误是:

AttributeError: 'GridSearchCV' object has no attribute 'best_estimator_' 

那么我应该如何使用网格搜索找到的最佳模型进行预测?

+0

您应该只能使用'grid_searches [k] .predict(testX)'。在你调用'gs.fit(...)'后,'gs'应该有优化的参数(基于搜索空间)。如果您尝试'grid_searches [k] .predict(...)',会发生什么?另外,如果您在'gs.fit(...)'下添加一行'print gs.best_estimator_',会发生什么? –

回答

2

从代码摘录中不清楚,你如何设置refit。根据docsbest_estimator_仅在此为True时可用。如果False,您应该仍然能够从grid_scores_中找到性能最佳的参数,然后使用它们与set_params()