快捷方式

torch.cov

torch.cov(input, *, correction=1, fweights=None, aweights=None) Tensor

根据 input 矩阵估计变量的协方差矩阵,其中行表示变量,列表示观测值。

协方差矩阵是一个方阵,它给出了每对变量的协方差。对角线包含每个变量的方差(变量与其自身的协方差)。根据定义,如果 input 表示单个变量(标量或一维)则返回其方差。

变量 xxyy 的样本协方差由下式给出:

cov(x,y)=i=1N(xixˉ)(yiyˉ)max(0, N  δN)\text{cov}(x,y) = \frac{\sum^{N}_{i = 1}(x_{i} - \bar{x})(y_{i} - \bar{y})}{\max(0,~N~-~\delta N)}

其中 xˉ\bar{x}yˉ\bar{y} 分别是 xxyy 的简单均值,δN\delta Ncorrection

如果提供了 fweights 和/或 aweights,则会计算加权协方差,其计算公式为:

covw(x,y)=i=1Nwi(xiμx)(yiμy)max(0, i=1Nwi  i=1Nwiaii=1Nwi δN)\text{cov}_w(x,y) = \frac{\sum^{N}_{i = 1}w_i(x_{i} - \mu_x^*)(y_{i} - \mu_y^*)} {\max(0,~\sum^{N}_{i = 1}w_i~-~\frac{\sum^{N}_{i = 1}w_ia_i}{\sum^{N}_{i = 1}w_i}~\delta N)}

其中 ww 表示 fweightsaweights (为了简便起见,分别用 fa 表示),具体取决于提供的是哪一个,或者 w=f×aw = f \times a 如果两者都提供,并且 μx=i=1Nwixii=1Nwi\mu_x^* = \frac{\sum^{N}_{i = 1}w_ix_{i} }{\sum^{N}_{i = 1}w_i} 是变量的加权平均值。如果未提供,f 和/或 a 可以被视为一个 1\mathbb{1} 适当大小的向量。

参数

input (Tensor) – 包含多个变量和观测值的二维矩阵,或表示单个变量的标量或一维向量。

关键字参数
  • correction (int, optional) – 样本大小和样本自由度之间的差异。默认值为 Bessel 校正,correction = 1,即使同时指定了 fweightsaweights,也会返回无偏估计。 correction = 0 将返回简单平均值。默认为 1

  • fweights (tensor, optional) – 表示观测向量频率的标量或一维张量,表示每个观测值应该重复的次数。其元素数量必须等于 input 的列数。必须具有整数数据类型。如果为 None 则忽略。默认为 None

  • aweights (tensor, optional) – 表示观测向量权重的标量或一维数组。这些相对权重通常对于被认为“重要”的观测值较大,对于被认为不太“重要”的观测值较小。其元素数量必须等于 input 的列数。必须具有浮点数据类型。如果为 None 则忽略。默认为 None

返回值

(Tensor) 变量的协方差矩阵。

另请参见

torch.corrcoef() 归一化的协方差矩阵。

示例:
>>> x = torch.tensor([[0, 2], [1, 1], [2, 0]]).T
>>> x
tensor([[0, 1, 2],
        [2, 1, 0]])
>>> torch.cov(x)
tensor([[ 1., -1.],
        [-1.,  1.]])
>>> torch.cov(x, correction=0)
tensor([[ 0.6667, -0.6667],
        [-0.6667,  0.6667]])
>>> fw = torch.randint(1, 10, (3,))
>>> fw
tensor([1, 6, 9])
>>> aw = torch.rand(3)
>>> aw
tensor([0.4282, 0.0255, 0.4144])
>>> torch.cov(x, fweights=fw, aweights=aw)
tensor([[ 0.4169, -0.4169],
        [-0.4169,  0.4169]])

文档

访问 PyTorch 的综合开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源