归一化:
1、把数变为(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
2、把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
归一化算法有:
1.线性转换
y=(x-MinValue)/(MaxValue-MinValue)
2.对数函数转换:
y=log10(x)
3.反余切函数转换
y=atan(x)*2/PI
4.线性也与对数函数结合
式(1)将输入值换算为[-1,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
3.小数定标规范化:通过移动X的小数位置来进行规范化
y= x/10的j次方 (其中,j使得Max(|y|) <1的最小整数
4.对数Logistic模式:
新数据=1/(1+e^(-原数据))
5.模糊量化模式:
新数据=1/2+1/2sin[派3.1415/(极大值-极小值)*(X-(极大值-极小值)/2) ] X为原数据
用sklearn实现:
1.z-score:
公式为:(X-mean)/std 计算时对每个属性/每列分别进行。
将数据按期属性(按列进行)减去其均值,并处以其方差。得到的结果是,对于每个属性/每列来说所有数据都聚集在0附近,方差为1。
实现时,有两种不同的方式:
-
使用sklearn.preprocessing.scale()函数,可以直接将给定数据进行标准化。
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.std(axis = 0)
#[ 1. 1. 1.]
-
使用sklearn.preprocessing.StandardScaler类,使用该类的好处在于可以保存训练集中的参数(均值、方差)直接使用其对象转换测试集数据。
-
import numpy as np from sklearn.preprocessing import 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.mean_ #[ 1. 0. 0.33333333] print scaler.std_ #[ 0.81649658 0.81649658 1.24721913] print scaler.transform(X) #[[ 0. -1.22474487 1.33630621] # [ 1.22474487 0. -0.26726124] # [-1.22474487 1.22474487 -1.06904497]]