均值移除(Mean Removal / Zero-centering)
2026/6/26 17:47:49 网站建设 项目流程

为什么要做?

原因

说明

消除量纲差异

age均值30,salary均值10000,数值差距大,模型难收敛

加速梯度下降

数据以0为中心,梯度更新更稳定、更快

PCA/标准化前置

很多算法要求数据零均值


Python 实现

1. 手动计算

python import numpy as np data = np.array([1, 2, 3, 4, 5]) mean = data.mean() # 3.0 data_centered = data - mean # [-2, -1, 0, 1, 2]

2. pandas(列操作)

python import pandas as pd df["age_centered"] = df["age"] - df["age"].mean()

3. sklearn(标准化流程)

python from sklearn.preprocessing import StandardScaler scaler = StandardScaler(with_mean=True, with_std=False) # 只去均值,不缩放 df_centered = scaler.fit_transform(df)

4. numpy 广播(矩阵批量处理)

python X = np.array([[1, 2], [3, 4], [5, 6]]) X_centered = X - X.mean(axis=0) # 按列去均值 # [[-2, -2], [0, 0], [2, 2]]

均值移除 vs 标准化

均值移除

标准化(Z-score)

公式

x - mean

(x - mean) / std

结果范围

均值为0,范围不变

均值为0,标准差为1

适用场景

已知分布、只需对齐中心

需要统一量纲


注意点

  • 训练集和测试集必须用同一个均值(训练集的均值),否则数据泄露
  • 只对数值型特征做,类别型特征不需要

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询