こんにちは。
ベクトルの次元数を減らすだけのPCAタスクに直面しています。この場合、私は2次元行列には興味がありませんが、K個の主固有ベクトルに沿って投影したいD次元ベクトルにすぎません。
PCAを実装するには、このベクトルの共分散行列を取得する必要があります。ベクトルの例でこれを実行してみましょう。
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]]
ここで何を間違えたのか正確にはわかりません。何かアドバイス?
ありがとう、
ジェイソン