1、什么是范围缩放
统一样本矩阵中的不同特征的最大值和最小值的范围。(一般都是0-1)
例如设样本集为X [0, 1, 2, 3,4, 5 ]
范围缩放到【0-1】后 X1 [0, 0.2, 0.4, 0.6, 0.8, 1]
kmin+ b = min’ =0 原本特征中的最小值转换为0(每列特征的k.b都不一样)
kmax+b = max’=1 原本特征中的最大值转换为1
有关特征,样本 在上一章中有所介绍点击
2、作用
让数据更加规范化,使得特征的范围具有可比性,在某些分类器主要是计算两点之间的欧几里得距离(两点之间的真实距离),如果一个特征比其他的特征有更大的范围值,那么距离将会被这个特征值所主导,因此每个特征应该被范围缩放,比如将取值范围处理为0到1之间,还可以加快梯度收敛速度
3、原理示例代码
import numpy as np
samples = np.array([
[25,175,79,0],
[21,169,72,1],
[25,155,79,0],
],dtype='float64')
mms_samples = samples.copy()
for col in mms_samples.T:
col_min = col.min() #最小值
col_max = col.max() #最大值
a = np.array([
[col_min,1],
[col_max,1],
])
min_max = np.array([0,1])
kb= np.linalg.lstsq(a,min_max)[0] #返回斜率k和截距b
col *= kb[0] # 标量和矢量计算会进行广播
col += kb[1] # 标量和矢量计算会进行广播
print(mms_samples)
3、调用库包代码
import numpy as np
import sklearn.preprocessing as sp #用来均值移除
sample = np.array([
[2, 4, 5, -1],
[3, 1, 7, -2],
[6, -3, 2, -1],
], dtype="float")
mms = sp.MinMaxScaler(feature_range=(0,1)) #这是一个范围缩放器, 缩放范围为0-1
# fit_transform先对样本进行拟合求出斜率和截距(有点类似于模型训练) 然后再对样本进行转换由求得斜率与截距进行样本转换(类似于模型预测)
new_s = mms.fit_transform(sample) #范围缩放后的样本矩阵
print(new_s)