数据规范化(归一化)处理是数据挖掘中的一项基础工作。消除指标间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例缩放,使之落入一个特定的区域,便于进行综合分析。如将工资收入属性映射到[-1, 1]或者[0, 1]内。
数据规范化对于基于距离的挖掘算法尤为重要
最小 - 最大规范化
也称为离差标准化,是对原始数据的线性变换,将数值值映射到[0, 1]之间。
转换公式:max-min 为极差
离差标准化保留了原来数据中存在的关系,是消除量纲和数据取值范围影响的最简单的方法。缺点:某个数值很大,规范化后接近0。将来有超过目前属性[min, max]取值范围的时候,会引起系统出错,需要重新设定min和max.零-均值规范化
也称为标准差标准化,经过处理的数据的均值为0,标准差为1。
转化公式:当前使用最多的数据标准化方法
小数定标规范化
通过移动属性值的小数位数,将属性值映射到[-1, 1]之间,移动的小数位数取决于属性值绝对值的最大值。
转化公式为:
import numpy as np
import pandas as pd
datafile = './data/normalization_data.xls' # 参数初始化
data = pd.read_excel(datafile, header=None) # 读取数据
(data - data.min()) / (data.max() - data.min()) #最小-最大规范化
(data - data.mean()) / data.std() # 零-均值规范化
data / 10**np.ceil(np.log10(data.abs().max())) # 小数定标规范化
np.ceil(np.log10(data.abs().max()))
0 3.0
1 3.0
2 3.0
3 4.0
dtype: float64