相关检验的Pearson系数和python的实现
一.皮尔森相关系数
皮尔森相关系数是反映两个变量之间相似度的统计量,机器学习可以计算特征和类别之间的相似度,判断提取的特征和类别是正相关、负相关还是无相关。
Pearson系数取值范围为[-1,1 ],值为负时为负相关,值为正时为正相关,绝对值越大,正/负相关程度越大。 如果数据中没有重复值,且两个变量完全单调相关,则spearman相关系数为1或-1。 如果两个变量独立,则相关系统为0,反之亦然
人员相关系数的计算方法有三种形式,如下式所示
在此,x,y是2个特征排列,是x,y的特征的平均值。 在第一种形式的Pearson表示中,可以认为是从两个随机变量中得出的样本集向量之间角度的cosine函数。
二. Python代码的实现
这里主要实现了最初的人员格式代码。 代码分为三个模块,第一个模块的功能是获取两个向量的平均值。 第二个模块的功能是求出两个向量之间的pearson系数,实现返回pearson系数; 最后一个模块是求出所有特征和类的相似度
[python]view plaincopy
#计算特征和班级的平均值
efcalcmean(x,y ) :
sum_x=sum(x )
sum_y=sum(y )
n=len(x )
x_mean=float(sum_x0.0 )/n
y_mean=float(sum_y0.0 )/n
returnx_mean,y_mean
[python]view plaincopy
人员系数的计算
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 ) ) (*(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 ) )。
sum bottom=math.sqrt (x _ pow * y _ pow ) )。
p=sumTop/sumBottom
returnp
[python]view plaincopy
[python]view plaincopy
#计算各特性的spearman系数,返回数组
defcalcattribute (数据) :
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 ) )
返回prr
三.示例演示
这里有1162*22个数据集。 如下图所示,前21列表示特征,第22列表示类别。 这个数据集是二分类问题。
对于每个特征,调用以上函数,得到的每个特征的人员系数如下图所示。 基于得到的结果,对特征选择有一定的依据哦~
看完了谢谢