在向量上使用numpy.cov会产生nan

2024-04-19 03:02:00 发布

您现在位置:Python中文网/ 问答频道 /正文

下午好。

我面临着一个PCA任务,它只涉及降低向量的维数。在这种情况下,我对二维矩阵不感兴趣,只感兴趣的是一个D维向量,我想沿着它投影K个主特征向量。

为了实现主成分分析,需要检索该向量的协方差矩阵。我们尝试在一个示例向量上执行此操作:

someVec = np.array([[1.0, 1.0, 2.0, -1.0]])

为了使它与numpy.cov兼容,我将这个向量定义为1 X 4矩阵,即行向量。通过numpy.cov获取该向量的协方差矩阵将产生标量协方差矩阵,因为numpy.cov假设特征在行中:

print np.cov(someVec)
1.58333333333

但这仅仅是(或者更确切地说,应该是)维度假设上的一个差异,而采用转置向量的协方差应该可以很好地工作,对吧?但它没有:

print np.cov(someVec.T)
/usr/lib/python2.7/site-packages/numpy/lib/function_base.py:2005: RuntimeWarning:                  
invalid value encountered in divide
return (dot(X, X.T.conj()) / fact).squeeze()
[[ nan  nan  nan  nan]
[ nan  nan  nan  nan]
[ nan  nan  nan  nan]
[ nan  nan  nan  nan]]

我不确定我到底做错了什么。有什么建议吗?

谢谢

杰森


Tags: numpylibnp情况矩阵nancov向量