4.3.1 缩放规范化
缩放规范化,具体来讲,是将数据按照比例缩放,使之落入一个较小的特定区间,如[0,1]。
在某些比较和评价的指标处理中经常会用到缩放规范化,用于去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或者量级的指标进行比较和加权。
先从最简单的缩放开始,如果特征之间的数值差异巨大,可以先从单个特征的最大值max和最小值min入手,将最大值和最小值作为控制缩放的因子。
下面介绍两种方法——存在样本[插图],其特征数为k,于是就有最小值-最大值缩放(Min-Max Scaling)及最大绝对值缩放(Max Absolute Scaling)。
最小值-最大值缩放将该样本每个特征下的最大值与最小值之差作为缩放倍数,实际上,每个特征下没有任何一个数会超过其最值之差,所以其作为分母;
而分子则是每个特征下的值与最小值之差。当然,全为0的特征,其缩放后的值为0。故有如下公式:
[插图]
经过最小值-最大值缩放之后的特征,其取值范围为0~1,从而使其转化为无量纲的纯数值,在之后的模型训练中,进一步提升模型的表现。其代码实现如下:
#数据预处理
#引用相关的库,numpy用于生成缺失值,sklearn.processing库中包含绝大多数的数据预处理方法
import numpy as np
from sklearn import preprocessing
#原始数据
X=np.array([[3,-2.,2.],[2.,0.,0.],[-1,1.,3.]])
#初始化数据预处理器,本例中为最大-最小值缩放
min_max_scaler = preprocessing.MinMaxScaler()
#数据转换并打印
X_minmax = min_max_scaler.fit_transform(X)
print("缩放规范化结果如下:\n")
print(min_max_scaler.scale_)
#输出其最小值
print("输出每一列的最小调整:\n")
print(min_max_scaler.min_)
print("输出每一列的最小值:\n")
print(min_max_scaler.data_min_)
