行列で特異ベクトル分解を使用して、U、S、およびVt行列を取得しています。この時点で、保持する次元数のしきい値を選択しようとしています。スクリープロットを見るよう提案されましたが、それを乱暴にプロットする方法について疑問に思っています。現在、私はpythonでnumpyおよびscipyライブラリを使用して以下を実行しています。
U, S, Vt = svd(A)
助言がありますか?
@shabbychef:つまり、累積合計を取り、すべての値の合計で割ります。
—
レジェンド
はい。matlabでは、それは
—
shabbychef '10 / 07/11
[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
S
それがまだ対角でない場合は、それを2乗し、降順で並べ替え、累積合計を取り、最後の値で除算してからプロットします。