皮尔逊相关系数python实现

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、皮尔逊相关系数

常见公式
在这里插入图片描述
公式转换
在这里插入图片描述
具体和皮尔逊相关系数相关的内容可以看之前的一篇文章。
相似度计算2——皮尔逊相关系数

二、python实现

方法1直接按公式算

import numpy as np

x=np.array([1,3,5])
y=np.array([1,3,4])
n=len(x)

sum_xy = np.sum(np.sum(x*y))
sum_x = np.sum(np.sum(x))
sum_y = np.sum(np.sum(y))
sum_x2 = np.sum(np.sum(x*x))
sum_y2 = np.sum(np.sum(y*y))
pc = (n*sum_xy-sum_x*sum_y)/np.sqrt((n*sum_x2-sum_x*sum_x)*(n*sum_y2-sum_y*sum_y))

print(pc)

方法2调用numpy中的corrcoef方法

方法
  corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue)

参数
  xarray_like包含多个变量和观测值的1-D或2-D数组x的每一行代表一个变量每一列都是对所有这些变量的单一观察。
  yarray_like可选另外一组变量和观察y具有与x相同的形状。
  rowvarbool, 可选如果rowvar为True(默认值)则每行代表一个变量并在列中显示。否则转换关系每列代表一个变量而行包含观察。
  bias_NoValue可选没有效果请勿使用
  ddof_NoValue可选没有效果请勿使用

返回值
  R : ndarray变量的相关系数矩阵。

代码

import numpy as np

x=np.array([1,3,5])
y=np.array([1,3,4])

pc=np.corrcoef(x,y)

print(pc)

方法3调用scipy.stats中的pearsonr方法

方法
  pearsonr(x, y)

参数
  x(N,) array_likeInput array。
  y(N,) array_likeInput array。

返回值
  r : float皮尔逊相关系数[-11]之间。
  p-value : floatTwo-tailed p-value双尾P值。
注 p值越小表示相关系数越显著一般p值在500个样本以上时有较高的可靠性。可以理解为显著性水平。

代码

from scipy.stats import pearsonr
import numpy as np

x=np.array([1,3,5])
y=np.array([1,3,4])

pc = pearsonr(x,y)

print("相关系数",pc[0])
print("显著性水平",pc[1])

方法4调用pandas.Dataframe中的corr方法

方法
   def corr(self,method,min_periods)

参数
  method可选值为{‘pearson’, ‘kendall’, ‘spearman’}
    pearson皮尔逊相关系数
    kendall肯德尔等级相关系数
    spearman斯皮尔曼等级相关系数
  min_periods样本最少的数据量最少为1。

返回值
  返回值各类型之间的相关系数DataFrame表格。

代码

import pandas as pd

data=pd.DataFrame({"x":[1,3,5],"y":[1,3,4]})

print(data.corr("pearson"))
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python