Ⅰ 数据预处理的无量纲化
1.1数据无量纲化
将不同规格的数据转化到同一规格或是将不同分布的数据转换到某个特定分布的需求,这种需求统称将数据“无量纲化”。在梯度和矩阵为核心的算法中,无量纲化可以加快求解速度,而在距离类模型中,无量纲化可以帮助我们提升模型精度,避免某一个取值范围特别大的特征对距离计算造成影响。决策树和树的集成模型是一个特例,它们不需要无量纲化,它们可以把任何数据处理的很好。
数据的无量纲化可以是线性的也可以是非线性的,线性的无量纲化包括中心化处理和缩放处理。中心化的本质是将所有记录减去一个固定值,就是使数据样本平移到某个位置,缩放的本质就是通过除以一个固定值,将数据固定到某个范围之中,取对数也算一种缩放。
1.2 preprocession.MinMaxScaler
当数据按照最小值中心化后,再按极差(最大值-最小值)缩放,数据移动到了最小值个单位,并且会收敛到[0,1]之间,这个过程称为数据的归一化(Normalization,又称Min-Max-Scaler),Normalization是归一化的意思不是正则化,正则化是regularization,不是数据预处理的手段。归一化后数据服从正态分布。
sklearn中,使用preprocess.MinMaxScaler来实现数据归一化,MinMaxScaler重要参数:feature_range,控制数据压缩到的范围,默认是[0,1]
1.3 preprocession.StandardScaler
当数据按均值中心化后,再按标准差缩放,数据会浮动均值为0,方差为1的正态分布(标准的正态分布),而这个过程称为数据标准化(StandardScaler,又称Z-score normalization)
对于StandardScaler和MinMaxScaler来说,空值NaN会被当成缺失值,在fit的时候忽视,在transform的时候保存缺失NaN的状态显示,无量纲化的过程不是具体的算法,但是在fit接口中,依然只允许导入至少二维数组,如果导入一维的数组会报错。
1.4 StandardScaler和MinMaxScaler选哪个?
大多数机器学习算法中,都是用StandardScaler来进行特征的缩放,因为MinMaxScaler对异常值非常敏感,在PCA,聚类,逻辑回归,SVM,神经网络这些算法中,StandardScaler会是比较好的选择。
MinMaxScaler用在不涉及度量距离、梯度、协方差计算以及数据需要被压缩到特定区间时使用,比如数字图像处理中量化像素强度时,都会使用MinMaxScaler将数据压缩到[0,1]区间之间。
可以先尝试一下StandardScaler,效果不好再换MinMaxScaler。
Sklearn中其他缩放处理: