当数据不规范的时候可以给出更好的结果,更好的得出变量的总体变化。
但是公式一点也不直观。。。
# -*- 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
时间: 2024-11-05 23:20:08