数据预处理(一):标准化,中心化,正态化
定义
标准化(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)#对测试集进行归一化