皮尔逊相关度

当数据不规范的时候可以给出更好的结果,更好的得出变量的总体变化。

但是公式一点也不直观。。。

# -*- coding: UTF-8 -*-
from math import sqrt
prefs={}#总数据
p1={}
p2={}#两个要比较的数据,用字典表示
si={}#相同的序列表
for item in prefs[p1]:
    if item in prefs[p2]:
        si[item]=1
n=len(si)#得到相同的个数
if n==0: flag = 1
sum1 = sum([prefs[p1][it] for it in si])#求和
sum2 = sum([prefs[p2][it] for it in si])

sum1sq = sum([pow(prefs[p1][it],2)for it in si])#求平方和
sum2sq = sum([pow(prefs[p2][it],2)for it in si])

psum = sum([prefs[p1][it]*prefs[p2][it] for it in si])#求乘积之和

num = psum-(sum1*sum2/n)
den = sqrt((sum1sq-pow(sum1,2)/n)*(sum2sq-pow(sum2,2)/n))
if den==0: flat = 0

r = num/den
if flag != 1:
    print r

 

你可能感兴趣的:(皮尔逊相关度)