使用 cross_val_score 通过交叉验证计算均方误差的函数
Posted
技术标签:
【中文标题】使用 cross_val_score 通过交叉验证计算均方误差的函数【英文标题】:A function to calculate the mean square error by cross-validation using cross_val_score 【发布时间】:2021-09-01 15:20:19 【问题描述】:我想编写一个函数,允许我使用 sklearn.model_selection 的 cross_val_score 函数计算通过 5 个样本交叉验证获得的均方根误差。
(知道 cross_val_score() 函数的打分参数允许选择我们想要使用的指标。)
我找到了这个方法,但它与问题不对应:
def rmse(predictions, targets):
return np.sqrt(((predictions - targets)**2).mean())
非常感谢,Merci beaucoup :)
【问题讨论】:
【参考方案1】:您可以简单地在sklearn.model_selection.cross_val_score
中设置scoring='mean_squared_error'
。查看validator 和metric 的文档。
换句话说:
cv = cross_val_score(estimator=my_estimator, X, y, cv=5, scoring='mean_squared_error')
【讨论】:
【参考方案2】:您在代码中使用了错误的公式,这里是均方误差的正确公式。
Y 是预期输出,O 是神经网络的实际输出。
【讨论】:
我试过这个,似乎工作:def rmse_cv(model, X_train, y_train): MSE_CV_scores = -cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error', n_jobs=-1) rmse_cv = np.sqrt(MSE_CV_scores).mean() return rmse_cv
【参考方案3】:
你可以试试:
def rmse_cv(model):
rmse= np.sqrt(-cross_val_score(model, X, y, scoring="neg_mean_squared_error", cv=5))
return rmse
【讨论】:
以上是关于使用 cross_val_score 通过交叉验证计算均方误差的函数的主要内容,如果未能解决你的问题,请参考以下文章
使用带有管道和 GridSearch 的 cross_val_score 进行嵌套交叉验证
cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考