数据归一化处理
数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是两种常用的归一化方法:
一、min-max标准化(Min-Max Normalization)
也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:
其中max为样本数据的最大值,min为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
二、Z-score标准化方法
这种方法给予原始数据的均值(mean)和标准差(standarddeviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:
三、代码实现和数据
# -*- coding: utf-8 -*-
# 数据规范化
import pandas as pd
data = pd.DataFrame([
[78, 602, 2863],
[144, -521, 2245],
[95, 468, -1283],
[69, 695, 1054],
[190, 691, 2051],
[101, 470, 2487],
])
print data
print "最小-最大规范化:"
print (data - data.min()) / (data.max() - data.min())
print "零-均值规范化:"
print (data - data.mean()) / data.std()
# -*- coding: utf-8 -*- # 数据规范化 import pandas as pd data = pd.DataFrame([ [78, 602, 2863], [144, -521, 2245], [95, 468, -1283], [69, 695, 1054], [190, 691, 2051], [101, 470, 2487], ]) print data print "最小-最大规范化:" print (data - data.min()) / (data.max() - data.min()) print "零-均值规范化:" print (data - data.mean()) / data.std()
输出如下:
相似距离和相似度
一、相似度转化为相似距离
相似度(sim)的范围[-1,1],相当于把-1转化为无穷大,把1转化为0。
公式:Dist=-log(sim/2+0.5)
二、相似距离转化为相似度
公式:相似度=1/(1+距离)
三、关于求[0,1]之间相似度
1. 先求欧式距离,再根据公式:相似度=1/(1+距离),得出相似度
2. 皮尔逊相关系数。
3. 先余弦相似度,因为取值范围是[-1,1],所以再归一化。
相似度=(余弦相似度+1)/2。