下午好。
我面临着一项 PCA 任务,该任务仅涉及减少向量的维数。在这种情况下,我对二维矩阵不感兴趣,而只是一个 D 维向量,我想沿着它的 K 个主特征向量进行投影。
为了实现 PCA,我需要检索这个向量的协方差矩阵。让我们尝试在示例向量上执行此操作:
someVec = np.array([[1.0, 1.0, 2.0, -1.0]])
我已将此向量定义为 1 X 4 矩阵,即行向量,以使其与 numpy.cov 兼容。通过 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]]
我不确定我在这里做错了什么。有什么建议吗?
谢谢,
杰森