Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 降维

我正在尝试将高维数据集减少为二维。但是,我无法预先访问整个数据集。因此,我想生成一个接受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!



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 19:42


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.