- 协方差的定义
在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
2 协方差矩阵实例
1.协方差公式:
如果一个变量是增加的趋势,另一个也是增加的趋势,证明是正相关,如果另一个朝相反的趋势,是负相关;如果协方差的值是0,证明他们不相关。
站在大数据的基础上考虑问题,使用机器学习算法挖掘数据,一般样本会有多个特征,如果用矩阵表示就是多维数据。
2.协方差矩阵:由数据集中两两变量的协方差组成。矩阵的第(i,j)(i,j)个元素是数据集中第ii和第jj个元素的协方差。例如,三维数据的协方差矩阵如下所示:
公式:
举个例子:有4个样本,每一行代表一个样本有3个特征:
第一个样本 2 , 0 , -1.4
第二个样本 2.2.,0.2 , -1.5
第三个样本 2.4., 0.1 , -1
第三个样本 1.9., 0 , -1.2
。。。。。一维 二维 三维
计算上面的矩阵的协方差,
重点是具体怎么算的呐?我被它难住就在这里,因为你需要处理样本的特征,并验证特征之间是否有关联性啊,解:
三维数据(三列元素),第一列均值2.125,第二列均值0.075,第三列均值 -1.275。
根据公式计算:
计算每个元素。
import numpy as np
X = [[2, 0, -1.4],
[2.2, 0.2, -1.5],
[2.4, 0.1, -1],
[1.9, 0, -1.2]]
print(np.mean(X,axis=0))
print(np.cov(np.array(X).T))
- numpy mean函数的axis参数
numpy提供的函数里含有一堆参数,有利于计算多维矩阵的求和、方差以及协方差。
axis=0,那么输出矩阵是1行,求每一列的平均(按照每一行去求平均);axis=1,输出矩阵是1列,求每一行的平均(按照每一列去求平均)。还可以这么理解,axis是几,那就表明哪一维度被压缩成1。
结果:
[ 2.125 0.075 -1.275]
[[ 0.04916667 0.01416667 0.01916667]
[ 0.01416667 0.00916667 -0.00583333]
[ 0.01916667 -0.00583333 0.04916667]]