使用scorer实现GridSearchCV进行遗漏交叉验证

2024-05-23 23:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试实现scikit learn的GridSearchCV for Gaussian过程回归(GPR)。我正在使用一个约200个点的小数据集,并希望使用LOOCV作为我的模型的性能评估器。我的设置是:

from sklearn.model_selection import *
from sklearn.ensemble import *
from sklearn.gaussian_process import *

param_grid = {
    'kernel':[kernels.RBF(),kernels.Matern(length_scale=0.1)],
    'n_restarts_optimizer':[5,10,20,25],
    'random_state':[30]
}
res_GPR = GridSearchCV(estimator=GaussianProcessRegressor(),param_grid=param_grid,cv=LeaveOneOut(),verbose=20,n_jobs=-1)
res_GPR.fit(X,y)

其中X和y分别是我的数据点和目标值。 我知道GPR返回的评分方法是r^2,这对于LOOCV情况是不可定义的(因为只有一个测试元素)-这通过获得拟合模型的.best_score_属性的NaN来验证。 因此,我希望对模型进行评分,每个测试用例的均方根误差(RMSE)在所有迭代中取平均值。对于如何实施这一评估方法的任何投入都将不胜感激


Tags: 数据方法from模型importparamressklearn
1条回答
网友
1楼 · 发布于 2024-05-23 23:24:50

GridSearchCV包括一个scoring参数,您可以使用该参数将分数设置为负RMSE:

res_GPR = GridSearchCV(estimator=GaussianProcessRegressor(),
                       param_grid=param_grid,
                       cv=LeaveOneOut(),
                       verbose=20,
                       n_jobs=-1, 
                       scoring = 'neg_root_mean_squared_error')

有关更多信息,请参见documentationlist of available scores

相关问题 更多 >