数据预处理--sklearn preprocessing模块的使用

本文主要介绍sklearn preprocessing四个数据预处理的函数,大概分两类,一是标准化,二是将将数据特征缩放至某一范围。
这四个函数都在sklearn preprocessing模块中,无论哪个方法,都是对列进行的操作

一、标准化

标准化适用的情况:如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征,这个时候需要数据标准化,分两步,一是去均值的中心化(均值变为0),二是方差的规模化(方差变为1)。通过这一步,可将特征值等级化,进而实现数据中心化。

原理

z-score标准化(zero-mean normalization)

原理:均值为0,标准差为1(符合标准正态分布) –> mean=0, std=1

转换函数: 
这里写图片描述

示例数据如下

  • scale()方法,适用不区分训练集与测试集前一次性变换
#scale方法的使用
#方法一
from sklearn import preprocessing
scale_data = preprocessing.scale(X)
#方法二
from sklearn.preprocessing import scale
scale_data = scale(X)
scale_data

#显示每列的均值和方差
scale_data.mean(axis=0)
scale_data.std(axis=0)

  • StandardScaler()方法,计算训练集的平均值和标准差,以便测试数据集使用相同的变换
#StandardScaler()方法
from sklearn import preprocessing

stand_means = preprocessing.StandardScaler()
X_trans = stand_means.fit_transform(X)
Y_trans = stand_means.transform(Y)

print("X_trans如下:")
X_trans
print('-'*60)
print("Y_trans如下:")
Y_trans

二、将数据特征缩放至某一范围

缩放适用的情况:数据集的标准差非常非常小,有时数据中有很多很多零(稀疏数据)需要保存住0元素,这样处理可对方差非常小的属性增强其稳定性,也可维持稀疏矩阵中为0的条目,一般情况下是缩放到在[0,1]之间,或者是特征中绝对值最大的那个数为1,其他数以此维标准分布在[[-1,1]之间。

以上两者分别可以通过MinMaxScaler 或者 MaxAbsScaler方法来实现,实现方法同StandardScaler()方法一样

MinMaxScaler()原理

转换函数:

这里写图片描述

MaxAbsScaler()

原理与上面的很像,只是数据会被规模化到[-1,1]之间。也就是特征中,所有数据都会除以最大值。这个方法对那些已经中心化均值维0或者稀疏的数据有意义。

猜你喜欢

转载自blog.csdn.net/qq_38923076/article/details/82982369