快捷方式

torch.cov

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

估計由 input 矩陣給出的變數的協方差矩陣,其中行是變數,列是觀測。

協方差矩陣是一個方陣,給出每對變數的協方差。對角線包含每個變數的方差(變數與其自身的協方差)。根據定義,如果 input 表示單個變數(標量或 1D),則返回其方差。

變數 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 表示根據提供的權重型別(為簡潔起見,使用 fa 表示 fweightsaweights),如果兩者都提供,則為 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}

引數

input (Tensor) – 一個包含多個變數和觀測的 2D 矩陣,或表示單個變數的標量或 1D 向量。

關鍵字引數
  • correction (int, optional) – 樣本大小與樣本自由度之間的差值。預設為 Bessel 校正,即 correction = 1,即使同時指定了 fweightsaweights,也會返回無偏估計。correction = 0 將返回簡單平均值。預設為 1

  • fweights (tensor, optional) – 一個標量或 1D 張量,表示觀測向量的頻率,即每個觀測應重複的次數。其元素數量必須等於 input 的列數。必須具有整型 dtype。如果為 None 則忽略。預設為 None

  • aweights (tensor, 可選) – 觀測向量權重的標量或一維陣列。這些相對權重對於被認為“重要”的觀測值通常較大,而對於被認為不太“重要”的觀測值則較小。其元素個數(numel)必須等於 input 的列數。必須具有浮點資料型別(dtype)。如果為 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 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深入教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源