数据预处理(一):标准化,中心化,正态化

定义

标准化(Standardization):将数据按照比例进行缩放,不改变数据的原始分布,使得不同的变量经过标准化处理后可以有平等分析和比较的基础。缩放后的数据均值为0,方差为1。但并不是标准正态分布。

 

 

 

归一化(Normalization):中心化和标准化基本一样,都是要把数据缩放到某个范围里。归一化通常有两种做法:

min-max 归一化的公式为:

[公式]

mean 归一化(有的地方也叫中心化)的公式为:

[公式]

正态化:改变数据的原始分布,使其服从正态分布。通常采用的方法有取对数,开平方根,取倒数,开平方,取指数等等,使得不对称分布的数据(偏态数据)呈现(或近似)正态分布。要这么做的原因在于:有些机器学习方法,比如线性回归模型就默认数据是正态分布。

https://blog.csdn.net/lcmssd/article/details/80179102?utm_source=blogxgwz0

https://blog.csdn.net/weixin_36604953/article/details/102652160

 

关于到底是先标准化/归一化还是先划分数据集(前者归一化的时候同时考虑了测试集和训练集,如均值就与测试集有关;后者划分过后均值只和训练集有关),个人认为应该先划分数据集,对划分出来的训练集标准化后,再用相同的标准化公式(其中均值方差来自于训练集)对测试集进行标准化,保证测试集在维度上与训练集保持一致。代码如下:

from sklearn import preprocessing
scaler = preprocessing.StandardScaler().fit(X_train)#通过训练集获得归一化公式
X_train_transformed = scaler.transform(X_train)#对训练集进行归一化
X_test_transformed = scaler.transform(X_test)#对测试集进行归一化

 

posted @ 2021-01-15 21:49  小千北同学超爱写代码  阅读(4958)  评论(0编辑  收藏  举报