AttributeError:“GridSearchCV”对象没有属性“best_estimator_”

Posted

技术标签:

【中文标题】AttributeError:“GridSearchCV”对象没有属性“best_estimator_”【英文标题】:AttributeError: 'GridSearchCV' object has no attribute 'best_estimator_' 【发布时间】:2016-03-15 08:00:54 【问题描述】:

我正在使用网格搜索来调整模型的参数(随机森林、线性回归等)。所以我把gs对象保存在grid_searches中:

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_'

那么我应该如何使用 Grid Search 找到的最佳模型进行预测?

【问题讨论】:

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

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

【讨论】:

以上是关于AttributeError:“GridSearchCV”对象没有属性“best_estimator_”的主要内容,如果未能解决你的问题,请参考以下文章

初学者 Python:AttributeError:'list' 对象没有属性

AttributeError:“字节”对象没有属性“告诉”

AttributeError: 'RDD' 对象没有属性 'show'

AttributeError:“NumpyArrayIterator”对象没有属性“类”

AttributeError:模块 'dbus' 没有属性 'lowlevel'

AttributeError:模块'keras'没有属性'initializers'