1、把数据编程(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0-1范围内处理,更加便捷快速
2、把有量纲表达式变为无量纲表达式
归一化是一种简化计算方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量
数据的标准化是将数据按照比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范处理,通过函数变换将其数值映射到某个数值区间。
1:z-score标准化(零-均值标准化)(常用)
y = (x-X的均值)/X的标准差 = (x-mean)/std
优点:当X的最大值和最小值未知,或者孤立点左右了最大-最小规范化时,该方法有用
2.最小-最大规范化
y=( (x-MinValue) / (MaxValue-MinValue) )(new_MaxValue-new_MinValue)+new_minValue
公式为:(X-mean)/std 计算时对每个属性/每列分别进行。
将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
实现时,有两种不同的方式:
import numpy as np
from sklearn.preprocessing import scale
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
X_scaled = scale(X)
print(X_scaled)
[[ 0. -1.22474487 1.33630621]
[ 1.22474487 0. -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]
print(X_scaled.mean(axis=0))
[0. 0. 0.]
print(X_scaled.mean(axis=1))
[ 0.03718711 0.31916121 -0.35634832]
import numpy as np
from sklearn.preprocessing import scale,StandardScaler
X = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
scaler = StandardScaler().fit(X)
print(scaler)
StandardScaler(copy=True, with_mean=True, with_std=True)
print(scaler.transform(X))
[[ 0. -1.22474487 1.33630621]
[ 1.22474487 0. -0.26726124]
[-1.22474487 1.22474487 -1.06904497]]
将属性缩放到一个指定的最小和最大值(通过0-1)之间,这可以通过怕热processing.MinMaxScaler类实现
使用这种方法的目的包括:
1:对于方差非常小的属性可以增强其稳定性
2:维持稀疏矩阵中为0的条目
import numpy as np
from sklearn.preprocessing import MinMaxScaler
X_train = np.array([[ 1., -1., 2.],
[ 2., 0., 0.],
[ 0., 1., -1.]])
min_max_scaler = MinMaxScaler()
print(min_max_scaler)
X_train_minmax = min_max_scaler.fit_transform(X_train)
print(X_train_minmax)
origin_data = min_max_scaler.inverse_transform(X_train_minmax)
print(origin_data)
#将相同的缩放应用到测试集数据中
X_test = np.array([-3., -1., 4.])
X_test_minmax = min_max_scaler.transform(X_test.reshape(1,-1))
print(X_test_minmax)
MinMaxScaler(copy=True, feature_range=(0, 1))
[[0.5 0. 1. ]
[1. 0.5 0.33333333]
[0. 1. 0. ]]
[[ 1. -1. 2.]
[ 2. 0. 0.]
[ 0. 1. -1.]]
[[-1.5 0. 1.66666667]]