【问题标题】:How do I visualize n-dimensional features?如何可视化 n 维特征?
【发布时间】:2015-10-20 21:25:09
【问题描述】:

我有两个矩阵ABA 的大小是 200*1000 双倍(这里:1000 代表 1000 个不同的特征)。矩阵A 属于第1 组,我使用ones(200,1) 作为标签向量。 B的大小也是200*1000 double(这里:1000也代表1000个不同的特征)。矩阵B 属于第2 组,我使用-1*ones(200,1) 作为标签向量。

我的问题是如何可视化矩阵AB,以便我可以根据给定的组清楚地区分它们?

【问题讨论】:

  • 平局是什么意思?另外,到目前为止,您尝试过什么?

标签: matlab grouping data-analysis


【解决方案1】:

我假设矩阵中的每个样本AB由矩阵中的行决定。如果我理解正确,你想绘制一系列1000维矢量,这是不可能的。我们不能在物理上可视化三维超出三维的任何东西。

因此,我建议您执行的是执行dimensionality reduction以减少数据,以便每个输入都减少到2或3维度。减少数据后,您可以正常绘制它们并为每个点分配不同的标记,具体取决于它们所属的群体。

如果您想在 MATLAB 中实现这一点,请使用 Principal Components Analysis,特别是 MATLAB 中的 pca 函数,如果您要将残差和重新投影的样本重新投影到较低维度上,该函数会计算它们。我假设你有统计工具箱......如果你没有,那么抱歉这不起作用。

特别是,给定你的矩阵AB,你会这样做:
[coeffA, scoreA] = pca(A);
[coeffB, scoreB] = pca(B);
numDimensions = 2;
scoreAred = scoreA(:,1:numDimensions);
scoreBred = scoreB(:,1:numDimensions);

pca 的第二个输出为您提供重新投影的值,因此您只需通过提取第一个 N 列来确定您想要多少维度,其中N 是您想要的维度数量。 P>

我现在选择了2,我们可以看到3个维度的样子。一旦我们拥有2个维度的需要,这只是一个绘图的问题:

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');

我们得到这个:

如果需要三个维度,只需更改numDimensions = 3,然后更改绘图代码即可使用plot3

plot3(scoreAred(:,1), scoreAred(:,2), scoreAred(:,3), 'rx', scoreBred(:,1), scoreBred(:,2), scoreBred(:,3), 'bo');
grid;

与这些变化,这就是我们得到的:

【讨论】:

    猜你喜欢
    • 2016-03-29
    • 2017-07-27
    • 2021-04-11
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2017-06-16
    相关资源
    最近更新 更多