数据预处理第1讲:标准化

论文合作、课题指导请联系QQ2279055353

数据预处理,是指在使用学习算法分析数据之前,对原始数据集作适当的变换,使得变换后的数据更适合学习算法。一般的机器学习算法要求对数据集做标准化的预处理。在实际处理时,我们经常忽略数据的分布形状,而只是对数据作中心化变换,即,每个变量的值减去其均值。这样,中心化之后的数据,变量的均值是0。

sklearn.preprocessing 包

Python的sklearn.preprocessing包提供了标准化的通用函数和变换类。

scale()函数

sklearn.preprocessing包的scale()函数提供了一个快速简单的标准化操作。

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])
X_scaled = preprocessing.scale(X_train)
X_scaled

在这里插入图片描述
缩放数据成零均值、单位方差。

X_scaled.mean(axis=0)
X_scaled.std(axis=0)

StandardScaler类执行Transformer API, 在训练集上计算均值与标准差,可以在后面的检验集上进行相同的变换,因此,该类适合用于管道函数。

scaler = preprocessing.StandardScaler().fit(X_train)
scaler.mean_
scaler.scale_
scaler.transform(X_train)
X_test = [[-1., 1., 0.]]
scaler.transform(X_test)

缩放特征

另外一种标准化方法,是把特征缩放到一个指定的范围内,通常在[0, 1]之内。

 X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])
min_max_scaler = preprocessing.MinMaxScaler()
X_train_minmax = min_max_scaler.fit_transform(X_train)
min_max_scaler.scale_
min_max_scaler.min_
X_test = np.array([[-3., -1.,  4.]])
X_test_minmax = min_max_scaler.transform(X_test)              

缩放稀疏数据

如果数据是稀疏的,即,有很多零值,那么中心化会破坏数据的稀疏结构。MaxAbsScaler(), maxabs_scale()函数特别被设计用来缩放稀疏数据。

缩放带有离群点的数据

如果数据里包括离群点(outliers), 通用方法效果不好,这是因为离群点的影响。robust_scale(), RobustScaler()函数使用更稳健的估计量。

你可能感兴趣的:(数据预处理第1讲:标准化)