当GridSearchCV与KerasRegressionor一起使用时,scikit learn GridSearchCV best_score_uu的含义是什么?

当GridSearchCV与KerasRegressionor一起使用时,scikit learn GridSearchCV best_score_uu的含义是什么?,keras,scikit-learn,grid-search,Keras,Scikit Learn,Grid Search,我使用scikit_learn.GridSearchCV为我的Keras神经网络(用于回归问题)搜索超参数。我的神经网络的输出是一个实际值: #generate a model (createModel is a function which returns a keras.Sequential model) model = keras.wrappers.scikit_learn.KerasRegressor(build_fn=createModel) #run the GridSearch

我使用scikit_learn.GridSearchCV为我的Keras神经网络(用于回归问题)搜索超参数。我的神经网络的输出是一个实际值:

#generate a model (createModel is a function which returns a keras.Sequential model)
model = keras.wrappers.scikit_learn.KerasRegressor(build_fn=createModel)

#run the GridSearch 
paramGrid = dict( epochs=[100, 250, 500], batch_size=[16, 32, 64] )
grid = sklearn.model_selection.GridSearchCV(estimator=model, param_grid=paramGrid, n_jobs=1, cv=5)

#obtain and print the result (X, y are some data)
grid_result = grid.fit(X, y)
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))

我不明白网格搜索结果中的最佳成员是什么。理论值和预测值之间是否存在差距?在我的例子中,这个最佳分数总是负值(而且相当大),对我来说没有任何意义。

当你没有通过一个特定的
评分
指标时,GridSearchCV将使用
估计器的默认
评分
方法

在您的示例中,您没有将度量传递给网格搜索实例,因此它将使用默认的分数度量
KerasRegressor
,这是预测的平均损失(根据)。因此,由于您设置了
cv=5
grid\u结果。最佳评分是所有5倍的平均损失的平均值

我建议您通过为
评分传递一个值来设置自己的性能指标。例如:

grid=sklearn.model_selection.GridSearchCV(估计器=模型,参数网格=参数网格,
得分='roc_auc',n_工作=1,cv=5)

您可以找到所有受支持指标的列表。您也可以自己定义。

文档中使用术语“准确性”是错误的;请注意,docstring的第一行引用了loss,源代码调用了
self.model.evaluate
,这反过来又()引用了loss函数。谢谢@BenReiniger。我稍微编辑了一下答案,以反映文档是错误的,代码调用
evaluate
。谢谢你们,这真的很有帮助。“文档中的“准确性”一词确实非常令人困惑。@MepM很乐意提供帮助。请记住,您可以投票并接受您认为有帮助的答案。@ArturoSbr我曾投票,但我的声誉不足15,因此不会显示出来。再次感谢。这最终取决于您的
createModel
代码,特别是您设置的损失和/或指标。