一、关于标准化、归一化、Normalizer的总结
- 标准化 StandardScalerList item
数据标准化 StandardScaler (基于特征矩阵的列,将属性值转换至服从正态分布) 标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下 常用与基于正态分布的算法,比如回归
- 归一化 MinMaxScalerm
数据归一化 MinMaxScaler (区间缩放,基于最大最小值,将数据转换到0,1区间上的) 提升模型收敛速度,提升模型精度 常见用于神经网络
- 正则化Normalizer
Normalizer (基于矩阵的行,将样本向量转换为单位向量) 其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准 常见用于文本分类和聚类、logistic回归中也会使用,有效防止过拟合
首先求出样本的p范数,然后该样本的所有元素都要除以该范数,这样最终使得每个样本的范数都是1。
规范化(Normalization)是将不同变化范围的值映射到相同的固定范围,常见的是[0,1],也成为归一化
该方法主要应用于文本分类和聚类中
sklearn.preprocessing.Normalizer(norm=’l2’, copy=True)
norm:可以为l1、l2或max,默认为l2
若为l1时,每个样本(每行)的值除以每个样本(每行)各值的绝对值之和
若为l2时,变换后每个样本(每行)的各维特征的平方和为1
若为max时,样本各个特征值除以样本中特征值最大的值
需要说明是,这里的归一化不是对一列的特征进行操作,而是对一行的样本(记录)进行操作。归一化适用于这样的场景:需要使用点积,或者有的模型需要对样本的相似性进行度量。
preprocessing中的normalize方法提供了这样的操作,这个方法有个参数叫做norm,取值可以为 ‘l1’,’l2’,’max’,取不同的值,使用不同的方式进行归一化。
当取值为’l1‘的时候,运用l1范数进行归一化,计算的方法是 :
运用l2范数进行归一化的时候,计算方法是这样的:
preproceing 的Normalizer也提供了标准化的方法,可以进行fit和transform操作,而preprocessing.normalize()
函数不可以
from sklearn import preprocessing
X = [[ 1., -1., 2.], [ 2., 0., 0.],[ 0., 1., -1.]]
#1、可以使用preprocessing.normalize()函数对指定数据进行转换:
preprocessing.normalize(X, norm='l2')
'''
array([[ 0.40824829, -0.40824829, 0.81649658],
[ 1. , 0. , 0. ],
[ 0. , 0.70710678, -0.70710678]])
'''
preprocessing.normalize(X, norm='l1')
'''
array([[ 0.25, -0.25, 0.5 ],
[ 1. , 0. , 0. ],
[ 0. , 0.5 , -0.5 ]])
'''
preprocessing.normalize(X, norm='max')
'''
array([[ 0.5, -0.5, 1. ],
[ 1. , 0. , 0. ],
[ 0. , 1. , -1. ]])
'''
#2、可以使用processing.Normalizer()类实现对训练集和测试集的拟合和转换:
normalizer = preprocessing.Normalizer().fit(X)#fit does nothing
normalizer #Normalizer(copy=True, norm='l2')
normalizer.transform(X)
normalizer.transform([[-1., 1., 0.]]) # array([[-0.70..., 0.70..., 0. ...]])
norm不同算法:
from sklearn import preprocessing
data = [[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]
encoder = preprocessing.OneHotEncoder().fit(data)
encoder.transform(data).toarray()
#输出
array([[1., 0., 1., 0., 0., 0., 0., 0., 1.],
[0., 1., 0., 1., 0., 1., 0., 0., 0.],
[1., 0., 0., 0., 1., 0., 1., 0., 0.],
[0., 1., 1., 0., 0., 0., 0., 1., 0.]])