2015-12-09 3 views
2

Я использую поиск сетки для настройки параметров моих моделей (Random Forest, Linear Regression и т. Д.). Так что я сохранить gs объекты в grid_searches:AttributeError: объект «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_' 

Итак, как мне делать прогнозы с использованием лучших моделей, найденных Grid Search?

+0

Вы просто должны просто использовать 'grid_searches [k] .predict (testX)'. После того, как вы вызываете 'gs.fit (...)', 'gs' должны иметь оптимизированные параметры (в зависимости от пространства поиска). Что произойдет, если вы попробуете просто «grid_searches [k] .predict (...)»? Кроме того, что произойдет, если вы добавите строку под 'gs.fit (...)' с 'print gs.best_estimator_'? –

ответ

2

Непонятно, из выдержки из кода, как вы установили refit. По docs, best_estimator_ доступен только в том случае, если это True. Если False, вы все равно сможете найти наиболее эффективные параметры от grid_scores_, а затем использовать их с set_params().

Смежные вопросы