利用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) 

猜你喜欢

转载自www.cnblogs.com/pandas-blue/p/11673976.html