数据归一化与标准化处理python

一: Zero-mean normalization(z-score标准化)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qoGPUXNm-1681476365601)(attachment:image.png)]

(1) 将原始数据集归一化为均值为0、方差1的数据集

(2) 该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。

应用场景:在分类、聚类算法中,需要使用距离来度量相似性的时候(比如K-means等聚类算法 中),或者使用PCA技术进行降维的时候,Z-score standardization表现更好。

1:调用preprocessing库的scale()函数

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X_train)

print(X_scaled)
print(X_scaled.sum()) # 4.4408920985e-16 ~ 0 均值为0,方差为1
print(np.var(X_scaled)) # 1.0
[[ 0.         -1.22474487  1.33630621]
 [ 1.22474487  0.         -0.26726124]
 [-1.22474487  1.22474487 -1.06904497]]
4.440892098500626e-16
1.0

二:Min-max normalization(最大最小归一化)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c5BQRiLD-1681476365602)(attachment:image.png)]

(1) 线性函数将原始数据线性化的方法转换到[0 1]的范围, 计算结果为归一化后的数据,X为原始数据

(2) 本归一化方法比较适用在数值比较集中的情况;

(3) 缺陷:如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量来替代max和min。

应用场景:在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用该方法或其他归一化方法(不包括Z-score方法)。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
#通过创建对象,调用函数MinMaxScaler()
max_abs_scaler = preprocessing.MinMaxScaler()
X_train_maxabs = max_abs_scaler.fit_transform(X_train)
print(X_train_maxabs)
#不创建对象,直接调用minmax_scale 的函数
print(preprocessing.minmax_scale(X_train))

# X_train_minmax = min_max_scaler.fit_transform(X_train)
#  X_train_minmax
[[0.5        0.         1.        ]
 [1.         0.5        0.33333333]
 [0.         1.         0.        ]]
[[0.5        0.         1.        ]
 [1.         0.5        0.33333333]
 [0.         1.         0.        ]]

归一化与标准化区别

一:相同点

取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移

二:不同点

(1)归一化:将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内。应用于没有距离计算的地方上,丢失了距离信息

(2)标准化:依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布。标准化则是使用在不关乎权重的地方上,丢失了权重信息;

拓展:

归一化和标准化之外,还有中心化(就是将数据的mean变成0).

一般来说,工程上优先使用标准化,然后再归一化