我有两个矩阵A
和B
。 的大小A
是200 * 1000双(这里:1000代表1000层不同的功能)。 矩阵A
属于组1,其中我使用ones(200,1)
作为标签载体。 的大小B
也是200 * 1000双(这里:1000也代表1000层不同的功能)。 矩阵B
属于组2,其中,我使用-1*ones(200,1)
作为标签载体。
我的问题是我怎么想象矩阵A
和B
,这样我可以明确区分他们基于给定的群体?
我有两个矩阵A
和B
。 的大小A
是200 * 1000双(这里:1000代表1000层不同的功能)。 矩阵A
属于组1,其中我使用ones(200,1)
作为标签载体。 的大小B
也是200 * 1000双(这里:1000也代表1000层不同的功能)。 矩阵B
属于组2,其中,我使用-1*ones(200,1)
作为标签载体。
我的问题是我怎么想象矩阵A
和B
,这样我可以明确区分他们基于给定的群体?
我在矩阵假设每个样品A
和B
通过在任一矩阵的行确定。 如果我理解正确的话,你想画一个系列1000维向量,这是不可能的。 我们不能想象身体之外的东西三个维度。
因此,你做什么,我的建议是进行降维 ,以减少你的数据使每个输入减少到2个或3个维度。 一旦你降低你的数据,你可以正常绘制出来,并分配不同的标记,以每个点,这取决于他们属于哪个组。
如果你想在MATLAB来实现这一点,使用主成分分析 ,特别是pca
在MATLAB的功能,如果你给他们重新投影到较低维计算的残差和重新投影的样本。 我假设你有统计工具箱......如果你不这样做,那么对不起,这是不行的。
具体地,给出你的矩阵A
和B
,你可以这样做:
[coeffA, scoreA] = pca(A);
[coeffB, scoreB] = pca(B);
numDimensions = 2;
scoreAred = scoreA(:,1:numDimensions);
scoreBred = scoreB(:,1:numDimensions);
的第二输出pca
让你重新投影值,所以你只需要确定通过提取第一你要多少尺寸N
列,其中N
是你想要的尺寸所需数量。
我选择了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;
这些变化,这就是我们得到: