You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线性回归MSE和RMSE计算方法及sklearn实现报错问题咨询

报错根因

你代码里的Y_NEW是用0到200范围内生成的100个新X值(X_NEW)预测得到的结果,样本量为100;而真实标签Y是原始5个训练样本的标签,样本量为5,二者数量不匹配自然会报样本数不一致的错误。

正确计算MSE/RMSE的方法

计算指标时,预测值必须和真实值一一对应,属于同一份样本集。如果要计算训练集上的MSE/RMSE,你应该用原始训练的X输入模型做预测,而不是用画图用的扩展X序列。

修改后的sklearn代码核心部分

# 省略前面加载依赖、定义训练数据、训练模型的代码,保持不变

# --------------- 修改部分开始 ---------------
# 计算训练集的预测值,和原始Y数量一致,都是5
predicted_train = model.predict(X)

true_val = Y
predicted_val = predicted_train
# --------------- 修改部分结束 ---------------

mse = mean_squared_error(true_val, predicted_val)
rmse = math.sqrt(mse)

print('Mean square error:',mse)
print('Root mean square error:',rmse)

# 原来的画图代码不用改,Y_NEW还是用来画拟合线的,不参与指标计算
x_new_min = 0.0
x_new_max = 200.0
X_NEW = np.linspace(x_new_min, x_new_max, 100)
X_NEW = X_NEW[:,np.newaxis]
Y_NEW = model.predict(X_NEW)

plt.plot(X_NEW, Y_NEW, color='coral', linewidth=3)
# 省略后面画图的代码,保持不变

补充说明

  • 如果后续有测试集,就用测试集的X输入模型得到预测值,再和测试集的真实标签计算指标即可,核心要求就是真实值和预测值的样本顺序、数量完全对应。
  • 你之前用scipy计算时,预测值就是用原始5个X算出来的,和真实值数量一致,所以不会报错,逻辑和上面修改后的sklearn代码完全一致。

内容的提问来源于stack exchange,提问作者Jerzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:02