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
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');
随着这些更改,这就是我们得到的:
我不认为这是微不足道的,但也许阅读:
https://arxiv.org/html/2501.10257v1