参考博客:https://www.zhihu.com/question/29316149
1,无量纲化使不同规格的数据转换到同一规格。
2,常见的无量纲化方法有标准化和区间缩放法。
2.1**标准化**的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。
标准化需要计算特征的均值和标准差,即正态分布标准化,公式表达为:
使用preproccessing库的StandardScaler类对数据进行标准化的代码如下:
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
#导入IRIS数据集
iris = load_iris()
#特征矩阵
iris.data
#目标向量
iris.target
#标准化,返回值为标准化后的数据
StandardScaler().fit_transform(iris.data)
2.2,区间缩放法利用了边界值信息,将特征的取值区间缩放到某个特点的范围,例如[0, 1]等。
区间缩放法的思路有多种,常见的一种为利用两个最值进行缩放,公式表达为:
使用preproccessing库的MinMaxScaler类对数据进行区间缩放的代码如下:
from sklearn.preprocessing import MinMaxScaler
#区间缩放,返回值为缩放到[0, 1]区间的数据
MinMaxScaler().fit_transform(iris.data)
3, 标准化与归一化的区别(这里的归一化与大众归一化描述有区别,注意辩证的去理解)
简单来说,标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。规则为l2的归一化公式如下:
使用preproccessing库的Normalizer类对数据进行归一化的代码如下:
from sklearn.preprocessing import Normalizer
#归一化,返回值为归一化后的数据
Normalizer().fit_transform(iris.data)