趋近智
当特征处于相对相似的尺度时,许多机器学习 (machine learning)算法表现更好或收敛更快。计算数据点间距离的算法(如K近邻)或依赖梯度下降 (gradient descent)优化(如线性回归、逻辑回归、神经网络 (neural network))的算法,对输入特征的尺度尤其敏感。如果一个特征的范围是0到1,而另一个是0到1,000,000,算法可能会仅仅因为其尺度而非预测价值,错误地赋予范围更大的特征更高的权重 (weight)。
标准化,常被称为Z-score缩放,是一种处理此问题的常见且有效的方法。它将数据转换,使其均值()为0,标准差()为1。
特征中每个值 的转换使用以下公式计算:
每个转换后的值表示原始值偏离均值的标准差数量。大于均值的值将为正,小于均值的值将为负,而等于均值的值将为零。
Scikit-learn在其preprocessing模块中提供了一个方便的转换器类StandardScaler。与其他Scikit-learn转换器一样,它遵循fit和transform模式。
fit方法计算训练数据中每个特征的均值()和标准差()。这些计算出的参数 (parameter)存储在缩放器对象中。仅在训练数据上拟合缩放器非常重要,以防止测试集的数据泄露。transform方法使用学到的 和 (来自fit步骤)将标准化公式应用于数据,从而生成缩放后的特征。在将数据输入模型之前,你将此方法应用于训练数据,以及稍后的任何新数据(如验证集或测试集)。让我们看看实际操作。假设我们有一个包含“年龄”和“收入”特征的简单数据集:
import pandas as pd
from sklearn.preprocessing import StandardScaler
# 示例数据
data = {'Age': [25, 30, 35, 40, 45, 50, 55, 60],
'Income': [50000, 55000, 60000, 65000, 70000, 75000, 80000, 85000]}
df = pd.DataFrame(data)
print("原始数据:")
print(df)
# 1. 初始化缩放器
scaler = StandardScaler()
# 2. 在数据上拟合缩放器(计算均值和标准差)
# 在实际场景中,仅在训练数据上拟合
scaler.fit(df)
# 3. 转换数据(应用缩放)
scaled_data = scaler.transform(df)
# 转换回DataFrame以提高可读性
scaled_df = pd.DataFrame(scaled_data, columns=df.columns)
print("\n缩放后的数据(标准化):")
print(scaled_df)
# 你可以查看学到的参数
print(f"\n学到的均值: {scaler.mean_}")
print(f"学到的尺度(标准差): {scaler.scale_}") # scale_ 是标准差
Output:
Original Data:
Age Income
0 25 50000
1 30 55000
2 35 60000
3 40 65000
4 45 70000
5 50 75000
6 55 80000
7 60 85000
Scaled Data (Standardization):
Age Income
0 -1.527525 -1.527525
1 -1.091089 -1.091089
2 -0.654654 -0.654654
3 -0.218218 -0.218218
4 0.218218 0.218218
5 0.654654 0.654654
6 1.091089 1.091089
7 1.527525 1.527525
Learned Mean: [ 42.5 67500. ]
Learned Scale (Std Dev): [ 11.45643924 11456.4392401 ]
请注意,缩放后的特征现在以零为中心。具体数值反映了它们相对于均值的原始位置,以标准差为单位衡量。
标准化改变了数据的尺度,但保留了其分布的形状。如果一个特征在标准化之前是偏斜的,标准化之后它仍然会偏斜,只是尺度不同。
'Age'特征在标准化之前(左,蓝色)和之后(右,橙色)的分布。请注意,直方图的形状相同,但X轴的尺度已改变以反映以0为中心的Z分数。
标准化是准备数值特征的核心技术。通过将数据以零为中心并根据其标准差进行缩放,使其更适合多种机器学习 (machine learning)算法,尤其是对特征尺度敏感的算法。请记住,仅在训练数据上拟合StandardScaler,然后用它来转换训练集和测试/验证集。
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•