皮尔逊相关系数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 |