Python机器学习代码损失超50偏差大,输入10输出错误值求解
问题根源
代码本身无运行报错,预测结果严重偏离的核心原因是偏差修正值的计算方向完全反向:
- 统计训练样本差值的代码为
nums.append(xdata[i] - ydata[i]),逻辑是用输入X减去对应目标Y - 代入你实际测试的单样本计算:X=10、Y=50,得到的差值为
10 - 50 = -40,这个值会被直接作为中位数存入median变量 - 后续预测逻辑为
float(输入X值) + median,代入测试场景:输入X=10时,计算结果为10 + (-40) = -30,和你实际运行得到的错误输出完全匹配。
代码修正方案
对齐最初的设计目标——用历史样本的统计偏差作为修正值,让输入X得到的预测结果接近期望Y,仅需要调整差值的计算方向即可:
- 将原循环内的差值计算代码
nums.append(xdata[i] - ydata[i])替换为nums.append(ydata[i] - xdata[i]) - 重新代入单样本场景验证:计算得到的差值为
50 - 10 = 40,median=40,预测时输入X=10的结果为10 + 40 = 50,和预期输出完全一致。
运行注意事项
- 这套逻辑本质是固定偏移的线性校准,仅适合Y与X为固定常数偏移关系的场景,遇到存在非线性关联的预测任务依然会产生较大损失
- 单样本、极小样本量的场景下,中位数的统计结果鲁棒性很差,建议积累足够多的匹配样本后再开展预测
- 目前代码中导入的
json模块、定义的空函数getY(x)没有实际运行作用,可以根据后续开发需求补全或移除。
内容的提问来源于stack exchange,提问作者UCYT5040
相关产品推荐
相关产品推荐

