Pearson.py 915 B

1234567891011121314151617181920212223242526272829303132
  1. # -*- coding: utf-8 -*-
  2. '''
  3. @author: yaleimeng@sina.com
  4. @license: (C) Copyright 2018
  5. @desc:
  6. @DateTime: Created on 2018/5/7, at 上午 09:51 by PyCharm '''
  7. from math import sqrt
  8. def multiply(a,b):
  9. # a,b两个列表的数据一一对应相乘之后求和
  10. sum_ab = 0.0
  11. for i in range(len(a)):
  12. temp = a[i]*b[i]
  13. sum_ab += temp
  14. return sum_ab
  15. def cal_pearson(x,y):
  16. n = len(x)
  17. # 求x_list、y_list元素之和
  18. sum_x = sum(x)
  19. sum_y = sum(y)
  20. # 求x_list、y_list元素乘积之和
  21. sum_xy = multiply(x, y)
  22. # 求x_list、y_list的平方和
  23. sum_x2 = sum([pow(i, 2) for i in x])
  24. sum_y2 = sum([pow(j, 2) for j in y])
  25. molecular = sum_xy-(float(sum_x)*float(sum_y)/n)
  26. # 计算Pearson相关系数,molecular为分子,denominator为分母
  27. denominator = sqrt((sum_x2-float(sum_x**2)/n)*(sum_y2-float(sum_y**2)/n))
  28. return molecular/denominator