[python]sklearn中归一化与标准化
归一化
当数据(x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放,数据移动了最小值个单位,并且会被收敛到 [0,1]之间,而这个过程,就叫做数据归一化(Normalization,又称Min-Max Scaling)。
在sklearn当中,我们使用preprocessing.MinMaxScaler来实现这个功能。MinMaxScaler有一个重要参数, feature_range,控制我们希望把数据压缩到的范围,默认是[0,1]。
1 | from sklearn import preprocessing |
out:1
2
3
4
5
6
7
8result1:
[[0. 1. ]
[0.5 0. ]
[1. 0.5]]
result2:
[[ 5. 10. ]
[ 7.5 5. ]
[10. 7.5]]
标准化
当数据(x)按均值(μ)中心化后,再按标准差(σ)缩放,数据就会服从为均值为0,方差为1的正态分布(即标准正态分 布),而这个过程,就叫做数据标准化(Standardization),一般情况下无监督学习是用标准化。1
2
3
4
5
6
7
8
9
10
11
12
13
14import numpy as np
from sklearn import preprocessing
data = np.array([[1, 200], [3, 100], [5, 150]])
scaler = preprocessing.StandardScaler() # 实例化
scaler.fit(data) # fit,本质是生成均值和方差
scaler.mean_ # 查看均值的属性mean_
scaler.var_ # 查看方差的属性var_
x_std = scaler.transform(data) # 通过接口导出结果
x_std.mean() # 导出的结果是一个数组,用mean()查看均值
x_std.std() # 用std()查看方差
scaler.fit_transform(data) # 使用fit_transform(data)一步达成结果
scaler.inverse_transform(x_std) # 使用inverse_transform逆转标准化
print(x_std)
out:1
2
3[[-1.22474487 1.22474487]
[ 0. -1.22474487]
[ 1.22474487 0. ]]