- StandardScaler 确保每个特征的平均值为 0、方差为 1,使所有特征都位于同一量级。
- MinMaxScaler 移动数据,使所有特征都刚好位于 0 和 1 之间。
- Normalizer 它对每个数据点进行缩放,使得特征向量的欧式长度等于 1 。
1、归一化(StandardScaler )
公式为: (X-mean)/std 计算时对每个属性/每列分别进行。
将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
from sklearn.preprocessing import StandardScaler
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler=StandardScaler()
scaler.fit(X)
print(scaler.mean_)
print(scaler.var_)
print(scaler.transform(X))
2、将属性缩放到一个指定范围
使用这种方法的目的包括:
- 对于方差非常小的属性可以增强其稳定性。
- 维持稀疏矩阵中为0的条目。
在构造类对象的时候也可以直接指定最大最小值的范围:feature_range=(min, max),此时应用的公式变为:
X_std=(X-X.min(axis=0))/(X.max(axis=0)-X.min(axis=0))
X_scaled=X_std/(max-min)+min
from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler=MinMaxScaler()
X_train_minmax=scaler.fit_transform(X)
print(X_train_minmax)
3、正则化
from sklearn.preprocessing import Normalizer
import numpy as np
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler=Normalizer(norm='l2')
X=scaler.fit_transform(X)
print(X)