在进行网格搜索和拟合最终模型时,我有些困惑。我将其分为2部分:培训和测试。测试集仅用于最终评估。我仅使用训练数据执行网格搜索。
说一个人使用交叉验证对几个超参数进行了网格搜索。网格搜索可提供超参数的最佳组合。下一步是训练模型,这让我感到困惑。我看到2种可能性:
1)不要训练模型。使用来自网格搜索的最佳模型中的参数。
或
2)不要使用来自网格搜索的最佳模型的参数。在具有网格搜索中最佳超参数组合的完整训练集上训练模型。
正确的方法是1还是2?
答案 0 :(得分:1)
这可能已经晚了,但可能对其他人有用。
GridSearchCV
具有一个名为refit
的属性,默认情况下将其设置为True
。这意味着在执行k倍交叉验证(即,对传入数据的子集进行训练)后,它会使用网格搜索中的最佳超参数对完整的训练集重新拟合模型。
据我所知,您的问题大概可以概括为:
假设您使用5倍交叉验证。然后将您的模型仅进行4折拟合,因为第五折用于验证。因此,您是否需要在整个火车上重新训练模型(即所有5折的数据)?
答案是否定的,只要您将refit
设置为True
,在这种情况下GridSearchCV
将使用其找到的最佳超参数对整个训练集进行训练交叉验证。然后它将返回经过训练的估计器对象,您可以像通常那样直接在其上调用predict
方法。
引用:https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
答案 1 :(得分:-1)
您使用训练集和GridSearch获得的参数训练模型。
然后您可以使用测试集测试模型。