1. 数据的标准化(规范化/归一化)
数据标准化是将样本的属性缩放到某个指定的范围。
数据标准化的原因:
- 某些算法要求样本具有零均值和单位方差;
- 需要消除样本不同属性具有不同量级时的影响:①数量级的差异将导致量级较大的属性占据主导地位;②数量级的差异将导致迭代收敛速度减慢;③依赖于样本距离的算法对于数据的数量级非常敏感。
1.1 z-score标准化(规范化):
基于原始数据的均值(mean)和标准差(standarddeviation)进行数据的标准化。将A的原始值x使用z-score标准化到x’。z-score标准化方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
数据中心化: 是指变量减去它的均值。
数据标准化: 是指变量减去它的均值,再除以标准差。
其公式为: 新数据 =(原数据- 均值)/ 标准差
Python代码实现:
1.使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。
from sklearn import preprocessing
import numpy as np
X = np.array([[1, -1, 2], [2, 0, 0], [0, 1, -1]])
X_scaled = preprocessing.scale(X) # 调用skleam函数实现标准化
# 处理后数据的均值和方差
X_scaled.mean(axis=0) # 均值
X_scaled.std(axis=0) # 方差
2.使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。
from sklearn.preprocessing import StandardScaler
import numpy as np
X = np.array([[ 1.,-1.,2.],[ 2.,0.,0.],[ 0.,1.,-1.]])
sca