Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在尝试将高维数据集减少为二维。但是,我无法预先访问整个数据集。因此,我想生成一个接受N维向量并返回2维向量的函数,这样,如果我将其提供给在N维空间中接近的向量,则结果在2维中就接近空间。
我以为SVD是我需要的答案,但我无法使其正常运行。 为简单起见,让N = 3并假设我有15个数据点。如果我将所有数据预先放在15x3的矩阵X中,则: [U, S, V] = svd(X); s = S; %s is a the reduced version of S, since matlab is case-sensitive. s(3:end,3:end)=0; Y=U*s; Y=Y(1:2,:); 做我想要的。但是,假设我得到一个新的数据点A,一个1x3向量。有没有办法使用U,S或V将A转换为适当的1x2向量? 如果SVD是一个失败的原因,有人可以告诉我我应该怎么做吗? 注意:这是Matlab代码,但是我不在乎答案是C,Java还是数学。如果您看不懂Matlab,请询问,我会澄清。 回答: SVD是一种很好的方法(可能)。 LSA(潜在语义分析)基于它,并且具有基本相同的维度方法。我已经在( lsa-latent-semantic-analysis-how-to-code-it-it-php )中讨论了这一点(或详细介绍过),或在此处查看LSA标签。 我意识到这是一个不完整的答案。如果您需要更多帮助,请联系Holler! 更多&回答... |
![]() |
![]() |