我在矩阵上使用奇异矢量分解,并获得了U,S和Vt矩阵。在这一点上,我试图为保留的维数选择一个阈值。有人建议我看一下碎石图,但想知道如何用numpy绘制它。目前,我正在使用python中的numpy和scipy库执行以下操作:
U, S, Vt = svd(A)
有什么建议么?
@shabbychef:您的意思是,取累加和除以所有值的和,对吗?
—
传奇
是。在matlab中,它将是
—
shabbychef 2011年
[U,S,V] = svd(X);S = cumsum(sort(diag(S).^2,1,'descend'));S = S ./ S(end);plot(S);
S
,如果还不是对角线,则将其平方,以降序排序,取累加和,除以最后一个值,然后绘制。