np.cov()容易忽略的地方/坑

五个样本,每个样本二维特征
import numpy as np
a = np.array([(2.5, 2.3), (1.5, 1.3), (2.2, 2.9), (2.1, 2.7), (1.7, 1.9)])

用np.cov(a)得到的结果 是一个shape为(5, 5)的array
array([[ 0.02 ,  0.02 , -0.07 , -0.06 , -0.02 ],
       [ 0.02 ,  0.02 , -0.07 , -0.06 , -0.02 ],
       [-0.07 , -0.07 ,  0.245,  0.21 ,  0.07 ],
       [-0.06 , -0.06 ,  0.21 ,  0.18 ,  0.06 ],
       [-0.02 , -0.02 ,  0.07 ,  0.06 ,  0.02 ]])
      
觉得很奇怪,两个特征维度,为什么计算结果是5*5的矩阵?

搜了一下协方差,网上的几个例子,跟理解中大部分是一样的。但为什么实际算出来的会完全不一样?
协方差计算的是 特征维度之间 变化方向同异问题,这里只有两个特征,问题在哪?

发现转置一下,计算出来是预期的样子了:(或者np.cov(a, rowvar=False))
np.cov(a.T)
array([[ 0.16 ,  0.195],
       [ 0.195,  0.412]])

看一下代码注释:
它这里的variable, observation跟常用的描述角度不一样, 初看时很晕,花了好多个小时才弄清。。。(主要原因有两个,第一个错估计很少人犯,第二个坑 可能较多人会没注意: 转置了我们通常的方向 )

通常情况下, 我们用来训练的数据,一行是一个样本,一列是一个特征。

它这里的variable是特征,  observation是样本。个人没接受这种说法前,觉得 也可以是: 样本是变化的变量, 观测是对于某个特征 或某一列 集中观察结果 (a single observation of all those variables)? 。。。 
有个挺大的坑是: 按照rowvar的默认值, 会把一行当成一个特征,一列当成一个样本。。这跟我们常用的数据位置方向 应该是反的 。。。 也解释了为什么 五个样本,每个样本二维特征 用np.cov()得到的结果 是一个shape为(5, 5)的array

    Parameters
    ----------
    m : array_like
        A 1-D or 2-D array containing multiple variables and observations.
        Each row of `m` represents a variable, and each column a single
        observation of all those variables. Also see `rowvar` below.
    y : array_like, optional
        An additional set of variables and observations. `y` has the same form
        as that of `m`.
    rowvar : bool, optional
        If `rowvar` is True (default), then each row represents a
        variable, with observations in the columns. Otherwise, the relationship
        is transposed: each column represents a variable, while the rows
        contain observations.


网上搜的讲协方差的例子,很多都是用matlab算的。matlab跟我们平时用的数据位置方向是一样的,所以看那些例子,都是顺着 自然的。np.cov默认值 为啥是这样的呢。。。有大侠知道的欢迎指点

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值