2

n*2マトリックス形式で表示された 2D ベクトルのセットがあります。

第 1 主成分、つまり分散が最も大きい方向を示すベクトルを取得したいと考えています。

ライス大学から、これに関するかなり詳細なドキュメントを見つけました。

これに基づいて、データをインポートし、次のことを行いました。

import numpy as np

dataMatrix = np.array(aListOfLists)   # Convert a list-of-lists into a numpy array.  aListOfLists is the data points in a regular list-of-lists type matrix.
myPCA = PCA(dataMatrix)   # make a new PCA object from a numpy array object

では、第 1 主成分である 3D ベクトルを取得するにはどうすればよいでしょうか?

4

3 に答える 3

1

PCA は 2d データから 2d vecs のみを提供します。

ウィキペディアのPCAの写真を見てください。
そのような点群 (dataMatrix) から始めて、 を使用するmatplotlib.mlab.PCA
myPCA.Wt[0]、最初の PC で、写真の長い PC になります。

于 2013-07-31T08:55:42.440 に答える
0

使用している例からは明らかではありませんがmatplotlib.mlab.PCA、その場合、ドキュメントには、返されたオブジェクトに属性Wtがあると記載されています。これは、「numdims ポイントまたは配列を PCA 空間に投影するための重みベクトル」です。

PCA降順で固有値を返します (返されたオブジェクトのfracs属性を見ればわかります)。したがって、最初の主成分 (最初の固有ベクトル) は の最初の行になりWtます。

@denis が指摘したように、入力データが 2D であるため、固有ベクトルは 2D (3D ではない) になります。

于 2013-07-31T13:40:00.200 に答える
0

同様の質問: Python での主成分分析

または、scikits Learn を見ることもできます: http://scikit-learn.org/0.13/modules/generated/sklearn.decomposition.PCA.html

于 2013-07-31T08:44:15.270 に答える