标准化
去均值,方差规模化
数据分析的过程中,比如线性规划这一类的分析,如果有些特征的数值远远高于或低于其他数值,通常称之为独立点、异常值或噪点,那么对于受噪点影响较大的模型就无法正确地去学习其他特征。
Standardization标准化:将特征数据的分布调整成标准正太分布,也叫高斯分布,过程为两步:去均值的中心化(均值变为0);方差的规模化(方差变为1)。
在sklearn.preprocessing中有一个scale方法,可以实现数据标准化,该方法默认按照列进行标准化。
from sklearn import preprocessing
import numpy as npx = np.array([[1., -1., 2., 3.],[2., 0., 0., -2],[0., 1., -1., 0],[1., 2., -3., 1]])print("标准化之前的方差:", x.mean(axis=0))
print("标准化之前的标准差:", x.std(axis=0))#标准化
x_scale = preprocessing.scale(x)
print("\n------------------\n标准化结果:\n", x_scale)
print("\n标准化之后的方差:", x_scale.mean(axis=0))
print("标准化之后的标准差:", x_scale.std(axis=0))
运行结果:
标准化之前的方差: [ 1. 0.5 -0.5 0.5]
标准化之前的标准差: [0.70710678 1.11803399 1.80277564 1.80277564]
标准化结果:
[[ 0. -1.34164079 1.38675049 1.38675049]
[ 1.41421356 -0.4472136 0.2773501 -1.38675049]
[-1.41421356 0.4472136 -0.2773501 -0.2773501 ]
[ 0. 1.34164079 -1.38675049 0.2773501 ]]
标准化之后的方差: [0. 0. 0. 0.]
标准化之后的标准差: [1. 1. 1. 1.]
数据归一化 MinMaxScaler()/MaxAbsScaler() 文章链接