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)