利用sklearn对数据预处理:标准化,归一化,正则化
一、标准化Standardization(z-score方法):
利用公式:( x-mean(x) ) / std(x) 对具有S相同属性的数据(即一列)做标准化处理,使数据服从零均值标准差的高斯分布。这种方法一般要求原数据的分布近似高斯分布。
涉及距离度量、协方差计算时可以应用这种方法。将有量纲数据化为无量纲数据,使数据能在同一数量级上进行比较。
from sklearn import preprocessing import pandas as pd import numpy as np mean=[4,3] cov=[[2.0,5.],[1.,1.]] x=np.random.multivariate_normal(mean,cov,7) data=pd.DataFrame(x) scaler = preprocessing.StandardScaler().fit(data.T) #对行做标准化处理 data_T_scale = scaler.transform(data.T) data_scale = data_T_scale.transpose()
二、归一化Normalization(min-max scaling)
利用公式 :( x-min ) / ( max-min ) 将原数据等比例缩放到[0,1]范围内。
涉及距离度量、协方差计算时不能应用这种方法,因为这种线性等比例缩放无法消除量纲对方差、协方差的影响。
min_max_scaler = preprocessing.MinMaxScaler() data_T_minmax = min_max_scaler.fit_transform(data.T) data_minmax = data_T_minmax.T
三、正则化
利用公式:x / || x ||p , 其中|| x ||p= ( x1p+...+xnp )1/p.
处理结果是使同属性的样本的p范数为1.
normalizer = preprocessing.Normalizer(copy=True, norm='l2').fit(data.T) data_T_normalize=normalizer.transform(data.T)