[英]python covariance matrix of array of vectors
我有一個大小為 4 的向量數組(我們可以考慮 4 元組)。 我想找到協方差矩陣,但如果我調用 self.cov,我會得到一個巨大的矩陣,而我期待的是 4x4。 代碼很簡單print(np.cov(iris_separated[0]))
其中 iris_separated[0] 是來自 iris 數據集的 setosas。
print(iris_separated[0]) 看起來像這樣
[[5.1 3.5 1.4 0.2]
[4.9 3. 1.4 0.2]
[4.7 3.2 1.3 0.2]
[4.6 3.1 1.5 0.2]
[5. 3.6 1.4 0.2]
[5.4 3.9 1.7 0.4]
[4.6 3.4 1.4 0.3]
[5. 3.4 1.5 0.2]
[4.4 2.9 1.4 0.2]
[4.9 3.1 1.5 0.1]
[5.4 3.7 1.5 0.2]
[4.8 3.4 1.6 0.2]
[4.8 3. 1.4 0.1]
[4.3 3. 1.1 0.1]
[5.8 4. 1.2 0.2]
[5.7 4.4 1.5 0.4]
[5.4 3.9 1.3 0.4]
[5.1 3.5 1.4 0.3]
[5.7 3.8 1.7 0.3]
[5.1 3.8 1.5 0.3]
[5.4 3.4 1.7 0.2]
[5.1 3.7 1.5 0.4]
[4.6 3.6 1. 0.2]
[5.1 3.3 1.7 0.5]
[4.8 3.4 1.9 0.2]
[5. 3. 1.6 0.2]
[5. 3.4 1.6 0.4]
[5.2 3.5 1.5 0.2]
[5.2 3.4 1.4 0.2]
[4.7 3.2 1.6 0.2]
[4.8 3.1 1.6 0.2]
[5.4 3.4 1.5 0.4]
[5.2 4.1 1.5 0.1]
[5.5 4.2 1.4 0.2]
[4.9 3.1 1.5 0.2]
[5. 3.2 1.2 0.2]
[5.5 3.5 1.3 0.2]
[4.9 3.6 1.4 0.1]
[4.4 3. 1.3 0.2]
[5.1 3.4 1.5 0.2]
[5. 3.5 1.3 0.3]
[4.5 2.3 1.3 0.3]
[4.4 3.2 1.3 0.2]
[5. 3.5 1.6 0.6]
[5.1 3.8 1.9 0.4]
[4.8 3. 1.4 0.3]
[5.1 3.8 1.6 0.2]
[4.6 3.2 1.4 0.2]
[5.3 3.7 1.5 0.2]
[5. 3.3 1.4 0.2]]
而且我期待一個 4x4 協方差矩陣,而不是我得到一個有很多維度的巨大矩陣。
[[4.75 4.42166667 4.35333333 ... 4.23 4.945 4.60166667]
[4.42166667 4.14916667 4.055 ... 3.93833333 4.59916667 4.29583333]
[4.35333333 4.055 3.99 ... 3.87666667 4.53166667 4.21833333]
...
[4.23 3.93833333 3.87666667 ... 3.77 4.405 4.09833333]
[4.945 4.59916667 4.53166667 ... 4.405 5.14916667 4.78916667]
[4.60166667 4.29583333 4.21833333 ... 4.09833333 4.78916667 4.4625 ]]
print(np.cov(iris_separated[0],rowvar=False)) 解決了問題, using.T 在數據上也是如此
您需要轉置矩陣。 每列代表一個觀察值,每一行代表一個變量。 因此,它應該是np.cov(iris_seperated[0].T)
。 請參考文檔
https://docs.scipy.org/doc/numpy/reference/generated/numpy.cov.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.