本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
协方差是常用的统计学上的概念之一,它用于评估变量与变量间的相关性
本文介绍协方差的概念和计算公式,并展示代码的实现
本节介绍协方差的意义及计算公式,并分析它的原理
协方差定义与公式
在统计学上用协方差来评估两个变量是否相关
协方差的定义及计算公式如下:
当协方差为0时,则说明两个变量不相关
协方差为什么能评估变量的相关性的
下面我们解析一下协方差为什么能评估变量的相关性的,加深对协方差的理解
记 ,,
则X'与Y'分别代表X和Y相对中心的偏移量,
则协方差是X与Y偏移量对应相乘再相加:
X与Y不相关
如果X与Y不相关,X的偏移方向与Y的偏移方向不相关,
即Y'是正是负与X'是否是负无关,X'*Y'是正(或负)的概率为50%,
则X'*Y'的期望就是0
X与Y相关
如果X与Y正相关,则X向上偏移时,Y也向上偏移,X向下偏移时,Y也向下偏移,那么X',Y'同正或同负,
则X'*Y'的期望大于0
类似地,负相关时,则X向上偏移时,Y就向下偏移,X向下偏移时,Y就向上偏移,那么X'、Y'一正一负,
则X'*Y'的期望小于0
本节介绍协方差矩阵是什么,并展示代码实现的DEMO
协方差矩阵是什么
什么是协方差矩阵
多个变量时,变量间两两之间的协方差,就组成了协方差矩阵
如下:
协方差矩阵的计算
设X为m行n列的数据,每列代表一个变量,
则X的协方差矩阵计算如下:
先将X中心化:
再用中心化的X'计算协方差矩阵:
计算协方差矩阵的代码实现
下面展示用python计算协方差矩阵的Demo
包括用公式计算及调用函数直接计算
# -*- coding: utf-8 -*-
"""
求协方差矩阵的Demo
"""
import numpy as np
X = np.array([[1,2,3],[2,3,3],[5,2,4],[6,8,3],[9,0,9]]) # 原始数据
#----------使用公式计算协方差------------
Xn = (X - X.mean(axis = 0)) # 原始数据中心化
C = Xn.T@Xn/(X.shape[0]-1) # 计算协方差矩阵
print('\n======数据:========','\n 原始数据 X:\n',X)
print('\n=======使用公式计算协方差:=======')
print('协方差矩阵C:\n',C)
#----------使用numpy自带函数计算协方差------------
Cnp = np.cov(X.T) # 使用numpy自带的cov函数计算协方差矩阵
print('\n=======使用numpy自带函数计算协方差:=======')
print('协方差矩阵Cnp:\n',Cnp)
运行结果如下:
======数据:========
原始数据 X:
[[1 2 3]
[2 3 3]
[5 2 4]
[6 8 3]
[9 0 9]]
=======使用公式计算协方差:=======
协方差矩阵C:
[[10.3 -0.75 6.7 ]
[-0.75 9. -4.75]
[ 6.7 -4.75 6.8 ]]
=======使用numpy自带函数计算协方差:=======
协方差矩阵Cnp:
[[10.3 -0.75 6.7 ]
[-0.75 9. -4.75]
[ 6.7 -4.75 6.8 ]]
好了,协方差、协方差矩阵及协方差的意义就介绍到这里了
End