重複の可能性:
MATLABはメモリを使い果たしていますが、
膨大なポイントのデータセットに対してPCA分析を実行したいと思います。具体的にsize(dataPoints) = [329150 132]
は328150
、はデータポイント132
の数、は機能の数です。
PCA再構成を実行できるように、固有ベクトルとそれに対応する固有値を抽出したいと思います。
ただし、princomp
関数を使用している場合(つまり[eigenVectors projectedData eigenValues] = princomp(dataPoints);
、次のエラーが発生します:
>> [eigenVectors projectedData eigenValues] = princomp(pointsData);
Error using svd
Out of memory. Type HELP MEMORY for your options.
Error in princomp (line 86)
[U,sigma,coeff] = svd(x0,econFlag); % put in 1/sqrt(n-1) later
ただし、より小さなデータセットを使用している場合は問題ありません。
Matlabのデータセット全体に対してPCAを実行するにはどうすればよいですか?誰かがこの問題に遭遇しましたか?
編集:
princomp
関数を変更して、のsvds
代わりに使用しようとしましsvd
たが、ほぼ同じエラーが発生します。私は以下のエラーを落としました:
Error using horzcat
Out of memory. Type HELP MEMORY for your options.
Error in svds (line 65)
B = [sparse(m,m) A; A' sparse(n,n)];
Error in princomp (line 86)
[U,sigma,coeff] = svds(x0,econFlag); % put in 1/sqrt(n-1) later