Python机器学习中RMSE与MAE持续为0的问题排查求助
线性回归RMSE/MAE为0的排查方案
以下是针对你遇到的线性回归模型误差全为0的问题,具体的排查步骤:
检查特征矩阵X是否包含目标变量或完全相关特征
你代码中X是通过store1.drop()得到的,需确认是否误将目标列Weekly_Sales留在了X中,或者存在与Weekly_Sales完全线性相关的特征。可以执行以下代码验证:# 查看X的所有列名 print(X.columns) # 计算X各特征与y的相关性 print(store1[X.columns].corrwith(y))如果输出中有相关系数为1的特征,说明该特征与目标变量完全线性相关,模型自然能完美预测。
验证数据划分与样本匹配
检查训练集、测试集的样本数量是否匹配,避免索引错位导致的异常:print(f"训练集样本数:X_train={X_train.shape[0]}, y_train={y_train.shape[0]}") print(f"测试集样本数:X_test={X_test.shape[0]}, y_test={y_test.shape[0]}")同时可以查看测试集的真实值与预测值是否完全一致:
import pandas as pd compare = pd.DataFrame({'真实值': y_test.values[:10], '预测值': y_pred[:10]}) print(compare)检查目标变量y的取值特性
如果目标变量Weekly_Sales的所有取值完全相同,模型只需预测该固定值即可得到零误差。执行以下代码确认:print(f"y的唯一值数量:{y.nunique()}") print(f"y的取值范围:{y.min()} 到 {y.max()}")检查数据预处理环节
虽然你使用了StandardScaler,但需确认缩放过程是否未对数据造成异常(比如缩放后特征全部变为0,但这种情况概率极低)。可以查看X_sc的部分数据:print(X_sc[:5])
内容的提问来源于stack exchange,提问作者Ria Dosani
相关产品推荐
相关产品推荐

