python与协方差
【python与协方差】方差是用来描述一维数据的偏差关系,而协方差是用来描述二维及以上的随机变量关系。协方差用cov方法表示,如cov(x,y)为正值,则x,y的关系是正相关的,为负则是负相关的,为0则没有关联。
看以下代码:
x=[-2.1, -1,4.3]
y = [3,1.1,0.12]
X = np.stack((x, y), axis=0)
此时X为:
array([[-2.1 , -1.,4.3 ],此时,我们可以通过mean方法求x,y的平均值(期望), var方法求方差:
[ 3.,1.1 ,0.12]])
np.var(x) # 7.806666666666666
np.var(y) # 1.4294222222222224
np.mean(x) # 0.3999999999999999
np.mean(y) # 1.4066666666666665
需要注意的是上面的var方法,默认是除以3,而下面的协方差则是除以3-1=2,可以通过ddof参数调节,即:
np.var(x,ddof=1)= np.cov(x)通过cov求协方差:
np.cov(x,y)
#array([[11.71, -4.286],
#[-4.286,2.14413333]])
上面函数产生了四个值,排列起来如下:
cov(x,x)=11.71cov(x,y)=-4.286这里面的值怎么来的?看下面公式:
cov(y,x)=-4.286cov(y,y)=2.14413333
文章图片
按照上面的公式我们来算最后一个cov(y,y):
((3-np.mean(y))*(3-np.mean(y))+(1.1-np.mean(y))*(1.1-np.mean(y))+(0.12-np.mean(y))*(0.12-np.mean(y)))/2
算出来正好为2.14413333,其它值也是一样。
x与y相乘结果如下:
list(map(lambda a,b:a*b,x,y))
#[-6.300000000000001, -1.1, 0.516]
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- Docker应用:容器间通信与Mariadb数据库主从复制
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 第326天
- Shell-Bash变量与运算符
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- Guava|Guava RateLimiter与限流算法
- python自定义封装带颜色的logging模块
- 我和你之前距离