python计算相关系数

python计算相关系数

from math import sqrt

def multipl(a, b):
    sumofab = 0.0
    for i in range(len(a)):
        temp = a[i] * b[i]
        sumofab += temp
    return sumofab


def corrcoef(x, y):
    n = len(x)
    # 求和
    sum1 = sum(x)
    sum2 = sum(y)
    # 求乘积之和
    sumofxy = multipl(x, y)
    # 求平方和
    sumofx2 = sum([pow(i, 2) for i in x])
    sumofy2 = sum([pow(j, 2) for j in y])
    num = sumofxy - (float(sum1) * float(sum2) / n)
    # 计算皮尔逊相关系数
    den = sqrt((sumofx2 - float(sum1 ** 2) / n) * (sumofy2 - float(sum2 ** 2) / n))
    return num / den


x = [0, 1, 0, 3]
y = [0, 1, 1, 1]

print(corrcoef(x, y))  # 0.471404520791


这个是行相关系数矩阵

import numpy as np
a=np.array([[1, 1, 2, 2, 3],
       [2, 2, 3, 3, 5]])
       # [1, 4, 2, 2, 3]])

b= np.corrcoef(a)
print(b)

使用np.corrcoef(a)可计算行与行之间的相关系数,np.corrcoef(a,rowvar=0)用于计算各列之间的相关系数,输出为相关系数矩阵。

应用公式0.5*value+0.5可以将相关系数矩阵的值域由[-1,1]映射为[0,1]。

[python]  view plain  copy
  1. np.corrcoef(a)*0.5+0.5  
参考:http://blog.csdn.net/elecjack/article/details/50913874

你可能感兴趣的:(数据结构与算法,统计)