preprocessing.scale函数介绍
目录
- 前言
- 函数介绍
- 示例
- 应用场景
- 注意事项
前言
preprocessing.scale 是 scikit-learn 库中的一个函数,用于在数据预处理中对特征进行标准化(标准差缩放)。标准化是指将数据调整到均值为零,方差为一的分布。这个过程有助于提升某些机器学习算法的性能,特别是那些依赖距离计算的算法,如支持向量机、k-means 聚类等。
函数介绍
sklearn.preprocessing.scale(X, axis=0, with_mean=True, with_std=True, copy=True)
参数介绍
X:要进行标准化处理的数据数组或者矩阵。通常是一个二维数组,其中行代表样本,列代表特征。
axis:指定沿哪个轴进行数据标准化。默认值为 0,即对每一列(特征)进行标准化。设置为 1 可以对每一行(样本)进行标准化。
with_mean:布尔型参数,表示是否将数据中心化(减去均值)。默认值为 True。
with_std:布尔型参数,表示是否将数据缩放到单位方差。默认值为 True。
copy:布尔型参数,表示是否在执行操作时复制数据。默认值为 True。如果设置为 False,则会在原地进行修改。
返回值
X_scaled:一个数组,包含标准化处理后的数据。
示例
from sklearn import preprocessing
import numpy as np
# 原始数据
X = np.array([[1.0, 2.0],
[3.0, 4.0],
[5.0, 6.0]])
# 标准化处理
X_scaled = preprocessing.scale(X)
print("标准化后的数据:\n", X_scaled)
print("均值:", X_scaled.mean(axis=0)) # 输出接近 [0, 0]
print("标准差:", X_scaled.std(axis=0)) # 输出接近 [1, 1]
结果如下:
标准化后的数据:
[[-1.22474487 -1.22474487]
[ 0. 0. ]
[ 1.22474487 1.22474487]]
均值: [0. 0.]
标准差: [1. 1.]
应用场景
机器学习模型:如 SVM、逻辑回归、神经网络等需要标准化输入的算法。
特征可比性:当特征尺度差异较大时(如年龄 vs 收入),标准化可避免某些特征主导模型。
注意事项
稀疏矩阵:若 with_mean=True,标准化会破坏稀疏性(转换为密集矩阵)。
标准差为 0:若某特征的标准差为 0(所有值相同),标准化后该列会变为 NaN,需提前处理。
替代方法:实际应用中更常用 StandardScaler 类(支持保存参数,适用于训练集和测试集的统一处理):
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
通过 preprocessing.scale 可以快速实现数据标准化,但在复杂流程中推荐使用 StandardScaler 类以保持一致性。