【sklearn实例】5--数据标准化/归一化

标准化&归一化

Standardization: z-score标准化(-1 ~ 1)

将数据均值转化为0,标准差转化为1。处理后的数据符合标准正态分布。

Normalization: min-max归一化(0 ~ 1)

利用最大最小值,将数据进行线性转化,范围落在(0  ~  1)。

为何要标准化/归一化

1 可以提升模型的收敛速度  采用梯度下降法求解时,归一化后优化形状变为圆形,梯度方向直指圆心,迭代速度变快,大大减少寻找最优解的时间;
2 提升模型的精度   设计距离计算时,数量级小的特征对结果的影响远远小于数量级大的特征,对精度造成损失,归一化可以使各个特征对结果做出的贡献相同。

适用场合

基于树算法不需要标准化(决策树、RF、XGboost等)

1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,标准化Z-score 表现更好

2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用min-max或其它归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0~255]的范围。

        归一化min-max后,其协方差产生了倍数值的缩放,因此这种方式无法消除量纲对方差、协方差的影响,对PCA分析影响巨大;同时,由于量纲的存在,使用不同的量纲、距离的计算结果会不同。
        标准化z-score方式中,新的数据由于对方差进行了归一化,这时候每个维度的量纲已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离时,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。

参考:https://blog.csdn.net/sjyttkl/article/details/80181018 

sklearn实现

# min-max归一化
from sklearn.preprocessing import MinMaxScaler
std=MinMaxScaler()
X_std=std.fit_transform(X_train)
# z-score标准化
from sklearn.preprocessing import StandardScaler
std=StandardScaler()
X_std=std.fit_transform(X_train)

 为了让测试集和训练集有相同的标准化或归一化变换,一般先fit (train) ,再transform ( train) 、transform ( test)。

内容略有单薄,其实是来蹭勋章的  o(*////▽////*)q   第二颗勋章get !  10.24原来是程序员节日!又涨知识了。

猜你喜欢

转载自blog.csdn.net/qq_43243022/article/details/83346261