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

数据标准化公式计算均值与标准差应使用全数据集还是仅训练集?

数据集标准化的统计量选择问题解答

核心结论

标准化时必须仅使用训练集的均值和标准差,不可使用训练集+测试集拼接的全数据集计算统计量。

逻辑解释

  • 测试集的核心作用是模拟模型上线后遇到的完全未知的新数据,用来客观评估模型的泛化能力。实际生产环境中,你不可能提前拿到所有未来待预测数据的统计信息,如果用测试集的统计量参与标准化,相当于将测试集的分布信息提前泄露给了预处理环节,最终得到的测试集评估结果会虚高,无法反映模型的真实泛化水平。
  • 你现有的实现将训练集和测试集拼接计算均值、标准差,属于典型的数据泄露问题,会导致后续模型效果评估完全失去参考意义。
  • 额外提示:标准化时应该按特征维度单独计算均值和标准差(即对每个特征列分别统计),你原有代码对整个拼接矩阵计算全局均值、标准差的做法也不符合标准化的要求,会混合不同特征的分布信息。

正确实现代码

import numpy as np

# 仅使用训练集按特征维度计算均值和标准差
X_mean = np.mean(X_tr, axis=0)
X_std = np.std(X_tr, axis=0)

# 处理标准差为0的极端情况,避免除零错误
X_std[X_std < 1e-8] = 1e-8

# 用训练集的统计量分别标准化训练集和测试集
X_tr_norm = (X_tr - X_mean) / X_std
X_te_norm = (X_te - X_mean) / X_std

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:05