使用 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折交叉验证,嗯都是抄来的,自己作个参考

sklearn中的cross_val_score交叉验证

交叉验证:来自 scikit-learn 参数的 cross_val_score 函数

cross_val_score的用法

sklearn - 具有多个分数的交叉验证