一 、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')