python - 使用记分器实现 GridSearchCV 以进行留一交叉验证
问题描述
我正在尝试为高斯过程回归(GPR)实现 scikit-learn 的 GridSearchCV。我正在使用一个约 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) 对模型进行评分,并对所有迭代进行平均。任何有关如何实施此评估方法的意见将不胜感激。
解决方案
推荐阅读
- java - 为什么我不能在使用scanner.close() 后创建另一个scanner 对象?
- django - Django:如果未提供 CharField 和 TextField,则不会引发错误
- android - 为什么我的大多数客户端设备都没有收到 FCM 通知?
- python - 将 CSS 合并到我的 Python 脚本的 HTML 中
- javascript - 如何检查这样的人是否对消息做出反应,并将该用户移动到 discord.js 中的另一个语音通道?
- java - 可以在多个地方进行 getResource 搜索吗?
- javascript - 扩展 Array.prototype 崩溃
- sql - 如何正确表达内部连接
- java - 如何将按钮连接到将在 FrameLayout 中使用用户输入编辑 TextView 的对话框?
- regex - 在perl中查找所有文本匹配正则表达式时如何解决问题?