数据归一化(数据标准化)
概念:数据标准化(归一化)是处理数据挖掘的一项基本工作,不同的评价指标往往具有不同的量纲(举例:对于房价评价时,楼房面积、房价、楼层等信息。举例2:对于个人患病率就有身高、体重等信息)和量纲单位(举例:面积单位:平方米、平方厘米等),会影响到数据分析的结果,为了消除指标之间的影响,需要进行标准化处理,解决数据之间的可比性。
经过标准化后,各个指标处于同一量级,适合进行综合对比讨论。
归一化的优点
1、归一化后加快梯度下降的速度
2、归一化有可能提高精度
方法一:min-max归一化(Min Max Normalization)
min-max归一化
别名:线性函数归一化、离差标准化
对原始数据进行线性变换,将结果映射到[0,1]之间。
公式如下
其中X为原始数据,Xmin为最小值,Xmax为最大值。
缺陷:当有新数据加入时,可能导致Xminh
这里利用pandas对数据进行定义,随后利用pandas中的apply函数进行遍历
import pandas as pd
import numpy as np
test_data = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]])
print(test_data)
def MinMaxNormalization(test_data):
return test_data.apply(lambda x:(x-np.min(x))/(np.max(x)-np.min(x)))
normalization_data = MinMaxNormalization(test_data)
print(normalization_data)
方法二:零均值归一化(Z-score Normalization)
将原始数据映射到均值为0,标准差为1的分布上。
原始特征的均值为,标准差为
,公式为
注意:这种归一化要求原始数据近似高斯分布,否则归一化效果较差
import pandas as pd
import numpy as np
test_data = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]])
print(test_data)
def Z_ScoreNormalization(test_data):
return test_data.apply(lambda x:(x-np.mean(x))/(np.std(x)))
print(Z_ScoreNormalization(test_data))
如果这里面的某一列标准差为0,会导致Nan。
特点:
1、在分类、聚类算法中,利用向量之间的距离来判断相似性、或者使用PCA进行降维时,零均值归一化表现较好。
2、在不涉及度量、协方差、数据不符合正态分布时,min-max效果较好,比如在图像处理中将RGB转换为灰度图像后将值限定在[0,255]