数据预处理:归一化、标准化
2019-04-12 本文已影响0人
taon
归一化:
1、把数变为(0,1)之间的小数,主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
2、把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。
归一化算法有:
1.线性转换:
y=(x-minvalue)/(maxvalue-minvalue)
2.对数函数转换:
y=log10(x)
3.反余切函数转换:
y=atan(x)*2/pi
归一化编程实现:
import numpy as np
from sklearn.preprocessing import MinMaxScaler #preprocessing:数据预处理模块
a = np.array([[13,62,9],[-3,6,18],[100,51,29]])# create a 3*3 matrix
model = MinMaxScaler()#MinMaxScale(copy = True,feature_range = (0,1))
train_a = model.fit_transform(a)
print(a)
array([[0.15533981, 1. , 0. ],
[0. , 0. , 0.45 ],
[1. , 0.80357143, 1. ]])
标准化
数据的标准化是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。
Z-score标准化,我们在衡量数据的分布时,通过对数据进行标准化,将数据转换为均值0,标准差为1的分布。
Z-score = (X-mean(x))/std
标准化的编程实现:
#scale()方法
import numpy as np
from sklearn.preprocessing import scale
a = np.array([[13,62,9],[-3,6,18],[100,51,29]])
train_a = scale(a)
print(train_a)
array([[-0.52293602, 0.92188257, -1.18195176],
[-0.87647023, -1.38970358, -0.08151391],
[ 1.39940625, 0.46782101, 1.26346568]])
#StandardScaler()方法
import numpy as np
from sklearn.preprocessing import StandardScaler
a = np.array([[13,62,9],[-3,6,18],[100,51,29]])
model = StandardScaler()#StandardScaler(copy=True, with_mean=True, with_std=True)
print(model.fit_transform(a))
array([[-0.52293602, 0.92188257, -1.18195176],
[-0.87647023, -1.38970358, -0.08151391],
[ 1.39940625, 0.46782101, 1.26346568]])
从上面的结果中可以看出,scale()和StandardScaler()方法的执行结果是相同的,所以在对数据进行标准化处理的时候,任选一种就行。