我如何可视化n维功能?

问题描述 投票:0回答:1
我有两个矩阵

A

B
A
的大小为200*1000 double(这里:1000代表1000个不同的功能)。矩阵
A
属于第1组,我在其中使用
ones(200,1)
作为标签向量。  
B
的大小也为200*1000 double(这里:1000也代表1000个不同的功能)。  矩阵
B
属于第2组,我在其中使用
-1*ones(200,1)
作为标签向量。 
我的问题是如何可视化矩阵

A

B
,以便我可以根据给定的组清楚地区分它们?
	
我假设您的矩阵中的每个样品

A
matlab grouping data-analysis
1个回答
2
投票
B

在两个矩阵中都由一行确定。 如果我正确理解您,您想绘制一系列1000维向量,这是不可能的。 我们无法物理地可视化三维以外的任何东西。

这样,我建议您做的是执行降低性降低以减少数据,以便将每个输入降低到2或3个维度。  减少数据后,您可以正常绘制它们并根据它们所属的组分配不同的标记。  
如果您想在MATLAB中实现此目标,请使用Principal组件分析
,特别是MATLAB中的

pca函数,如果您要将其重新投影到较低的维度上,则可以计算残差和重新注射的样品。 我假设您有统计工具箱...如果您不这样做,那么对不起,这将行不通。 特别是,鉴于您的矩阵

A

B,您会这样做:

[coeffA, scoreA] = pca(A);
[coeffB, scoreB] = pca(B);
numDimensions = 2;
scoreAred = scoreA(:,1:numDimensions);
scoreBred = scoreB(:,1:numDimensions);
第二个输出为您提供了重新注射的值,因此您只需要通过提取第一个

pca

列来确定所需的数量数量,其中

N
是所需的尺寸的数量。
我现在选择了2个,我们可以看到在3个维度中的外观。  一旦我们拥有2个维度所需的东西,这只是绘制的问题:

N
这将产生一个图,其中矩阵中的样品与红色十字一起,而来自矩阵的样品则与蓝色圆圈。

给出完全随机数据的样本运行:

plot(scoreAred(:,1), scoreAred(:,2), 'rx', scoreBred(:,1), scoreBred(:,2), 'bo');
我们明白了:

如果您需要三个维度,只需更改

A

,然后更改绘图代码以使用
B

rng(123); %// Set seed for reproducibility A = rand(200,1000); B = rand(200,1000); %// Generate random data %// Code as before [coeffA, scoreA] = pca(A); [coeffB, scoreB] = pca(B); numDimensions = 2; scoreAred = scoreA(:,1:numDimensions); scoreBred = scoreB(:,1:numDimensions); %// Plot the data plot(scoreAred(:,1), scoreAred(:,2), 'rx', scoreBred(:,1), scoreBred(:,2), 'bo');
随着这些更改,这就是我们得到的:

enter image description here

我不认为这是微不足道的,但也许阅读:
https://arxiv.org/html/2501.10257v1


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.