600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python质量数据关联性分析_相关性检验之Pearson系数及python实现

python质量数据关联性分析_相关性检验之Pearson系数及python实现

时间:2024-08-15 11:40:37

相关推荐

python质量数据关联性分析_相关性检验之Pearson系数及python实现

相关性检验之Pearson系数及python实现

一、Pearson相关系数

皮尔森相关系数是用来反应俩变量之间相似程度的统计量,在机器学习中可以用来计算特征与类别间的相似度,即可判断所提取到的特征和类别是正相关、负相关还是没有相关程度。

Pearson系数的取值范围为[-1,1],当值为负时,为负相关,当值为正时,为正相关,绝对值越大,则正/负相关的程度越大。若数据无重复值,且两个变量完全单调相关时,spearman相关系数为+1或-1。当两个变量独立时相关系统为0,但反之不成立

Pearson相关系数的计算方法有三种形式,如下列公式所示

其中X,Y代表两个特征数组, , 为X,Y特征的平均值。对于第一种形式的Pearson表示,可以看做是两个随机变量中得到的样本集向量之间夹角的cosine函数。

二、Python代码实现

在这里主要实现了第一种Pearson形式的代码,代码分为三个模块,第一个模块的功能是来获取两个向量的平均值;第二个模块的功能实现的是求两个向量间的pearson系数,返回pearson系数;最后一个模块是来求取所有特征和类的相似程度

[python]view plaincopy

#计算特征和类的平均值

efcalcMean(x,y):

sum_x=sum(x)

sum_y=sum(y)

n=len(x)

x_mean=float(sum_x+0.0)/n

y_mean=float(sum_y+0.0)/n

returnx_mean,y_mean

[python]view plaincopy

#计算Pearson系数

defcalcPearson(x,y):

x_mean,y_mean=calcMean(x,y)#计算x,y向量平均值

n=len(x)

sumTop=0.0

sumBottom=0.0

x_pow=0.0

y_pow=0.0

foriinrange(n):

sumTop+=(x[i]-x_mean)*(y[i]-y_mean)

foriinrange(n):

x_pow+=math.pow(x[i]-x_mean,2)

foriinrange(n):

y_pow+=math.pow(y[i]-y_mean,2)

sumBottom=math.sqrt(x_pow*y_pow)

p=sumTop/sumBottom

returnp

[python]view plaincopy

[python]view plaincopy

#计算每个特征的spearman系数,返回数组

defcalcAttribute(dataSet):

prr=[]

n,m=shape(dataSet)#获取数据集行数和列数

x=[0]*n#初始化特征x和类别y向量

y=[0]*n

foriinrange(n):#得到类向量

y[i]=dataSet[i][m-1]

forjinrange(m-1):#获取每个特征的向量,并计算Pearson系数,存入到列表中

forkinrange(n):

x[k]=dataSet[k][j]

prr.append(calcSpearman(x,y))

returnprr

三、样例演示

这里有一个1162*22的数据集,如下图所示,前21列表示特征,第22列表示类别。该数据集是一个二分类问题。

对于每个特征,调用上述函数,得出的每个特征的pearson系数如下图所示。根据得到的结果,对于特征选择就有一定的依据啦~

完 谢谢观看

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。