数据标准化

一 、Z-Score 标准化

公式:$ \frac{x - x.mean}{x.std}$

即:将数据按其属性(列)减去对应属性的均值,再除以方差

【得到的结果对于每个属性(列)来说所有数据都聚集在 $ \color{red}{0} $ 附近,方差为 $ \color{red}{1} $ 】

  • 使用sklearn.preprocessing()
from sklearn import preprocessing
scaled = preprocessing.scale(data)
  • 使用sklearn.preprocessing.StandardScaler类

使用该类可以保存训练集中的参数(均值,方差),可以直接使用其对象转换测试集数据

from sklearn.preprocessing import StandardScaler
scaler = StandradScaler().fit(train_data)
# 查看数据的均值
# scaler.mean_
# 查看数据的方差
# scaler.std_
# 直接对测试集进行转换
scaler.transform(test_data)

二 、0-1 标准化

也叫离差标准化,是对原始数据进行线性变换,使其结果落在[0,1]区间内

公式:$ \tilde{a} = \frac{x-x.min}{x.max-x.min} $

  • 可以通过sklearn.preprocessing.MinMaxScaler类实现
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
train_scaled = min_max_scaler.fit_transform(train_data)
# 同样的缩放应用到测试集数据中
test_scaled = min_max_scaler.transform(test_data)
# 查看缩放因子
# min_max_scaler.scale_

三 、正态分布化(Normalization)

Normalization用来将各个样本归一化为norm为1的正态分布。

  • 该方法是 $ \color{red}{文本分类} $ 和 $ \color{red}{聚类分析} $ 中经常使用的向量空间模型(SVM)的基础
  • Normalization 主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后的样本的p-范数等于1
  • sklearn.preprocessing.normalize()
from sklearn.preprocessing import normalize
data_normalized = normalize(data,norm = 'l2')
# data_normalized = normalize(data,norm = 'l1')

你可能感兴趣的:(数据标准化)