使用记分器实现 GridSearchCV 进行留一交叉验证

问题描述 投票:0回答:1

我正在尝试实现 scikit-learn 的 GridSearchCV 用于高斯过程回归(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) 对模型进行评分,并对所有迭代进行平均。我怎样才能做到这一点?

python machine-learning scikit-learn regression cross-validation
1个回答
2
投票

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

请参阅文档可用分数列表了解更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.