集体智慧编程-皮尔逊相关系数代码理解
2018-01-04 23:38
357 查看
刚开始看关于皮尔逊相关系数计算的代码,把我看得是晕头转向,不过在学习完概率论的课程后,发现结合公式再来看代码就会比较简单了。
期望公式
E(x)=1n∑i=1nxi
方差公式
var(x)=E{[x−E(x)]2}
=E{x2−2x×E(x)+[E(x)]}
=E(x2)−2E(x)E(x)+[E(x)]2
=E(x2)−[E(x)]2
期望性质
E(c)=c
因此对于上诉方差推导公式
E{−2x×E(x)}=−2E(x)E(E(x))=−2E(x)E(x)
因为
E(x)=c
即
E{E(x)}=E(x)
推导方差公式有利于下面皮尔逊相关系数的推导
皮尔逊相关系数计算公式
pxy=cov(x,y)var(x)var(y)−−−−−−−−−−−√
协方差公式
cov(x,y)=E{[x−E(x)][y−E(y)]}
=E{XY−XE(Y)−YE(X)+E(X)E(Y)}
=E(XY)−E(X)E(Y)
书中第三章关于皮尔逊相关系数的代码如下
变量的意义(i=j)为了公式推导方便,在下面的式子中会用i代替j
sum1
sum1=∑i=1nxi
sum2
sum2=∑j=1nyj
sum1sq
sum1Sq=∑i=1nx2i
sum2sq
sum2sq=∑j=1nyj2
psum
psum=∑i=1nxiyi
num
num=∑i=1nxiyi/n−∑i=1nxi/n×∑i=1nyi/n
=E(X)E(y)−E(X)E(Y)
nden*nden
=⎡⎣∑i=1nxi2−(∑i=1nxi)2⎤⎦⎡⎣∑i=1ny2i−(∑i=1nyi)2⎤⎦
=nVar(X)Var(Y)
关于den这个变量因为公式太长不好展示只好先处理一下了
这样num/den就可以得到皮尔逊相关系数了
期望公式
E(x)=1n∑i=1nxi
方差公式
var(x)=E{[x−E(x)]2}
=E{x2−2x×E(x)+[E(x)]}
=E(x2)−2E(x)E(x)+[E(x)]2
=E(x2)−[E(x)]2
期望性质
E(c)=c
因此对于上诉方差推导公式
E{−2x×E(x)}=−2E(x)E(E(x))=−2E(x)E(x)
因为
E(x)=c
即
E{E(x)}=E(x)
推导方差公式有利于下面皮尔逊相关系数的推导
皮尔逊相关系数计算公式
pxy=cov(x,y)var(x)var(y)−−−−−−−−−−−√
协方差公式
cov(x,y)=E{[x−E(x)][y−E(y)]}
=E{XY−XE(Y)−YE(X)+E(X)E(Y)}
=E(XY)−E(X)E(Y)
书中第三章关于皮尔逊相关系数的代码如下
sum1 = sum(v1) sum2 = sum(v2) sum1sq = sum([pow(v, 2) for v in v1]) sum2sq = sum([pow(v, 2) for v in v2]) pSum = sum([v1[i]*v2[i] for i in range(len(v1))]) num = pSum - (sum1*sum2/len(v1)) den = sqrt((sum1sq - pow(sum1, 2)/len(v1)) * (sum2sq - pow(sum2, 2)/len(v))) if den == 0: return 0 return num/den
变量的意义(i=j)为了公式推导方便,在下面的式子中会用i代替j
sum1
sum1=∑i=1nxi
sum2
sum2=∑j=1nyj
sum1sq
sum1Sq=∑i=1nx2i
sum2sq
sum2sq=∑j=1nyj2
psum
psum=∑i=1nxiyi
num
num=∑i=1nxiyi/n−∑i=1nxi/n×∑i=1nyi/n
=E(X)E(y)−E(X)E(Y)
nden*nden
=⎡⎣∑i=1nxi2−(∑i=1nxi)2⎤⎦⎡⎣∑i=1ny2i−(∑i=1nyi)2⎤⎦
=nVar(X)Var(Y)
关于den这个变量因为公式太长不好展示只好先处理一下了
这样num/den就可以得到皮尔逊相关系数了
相关文章推荐
- 集体智慧编程-分级聚类算法代码理解
- 集体智慧编程-K均值聚类代码理解
- 集体编程智慧代码摘抄【第二章】
- 集体编程智慧(发现的一些代码问题)
- 集体智慧编程第六章对面向对象的深入理解
- 集体智慧编程 Programming Collective Intelligence 书中代码程序研究
- “集体智慧编程”之第七章:决策树
- 【集体智慧编程 学习笔记】 Euclidean距离和Pearson相关系数
- 集体智慧编程学习之决策树
- python与集体智慧编程学习
- 【集体智慧编程】提供推荐
- 集体智慧编程学习笔记之文档过滤
- 集体智慧学习编程—— 学习笔记一
- 集体智慧编程(二)发现群组
- 集体智慧编程(一) Making Recommendations
- 【转】读书笔记:“集体智慧编程”之第二章:推荐算法——协同滤波
- Spark实现 集体智慧编程 第二章电影推荐
- “集体智慧编程”之第九章:高阶分类-核方法与SVM
- 集体智慧编程——博客文章聚类-Python实现
- 细细审视的你代码:一点编程理解