如何在Matlab中用gscatter绘制t-SNE并为训练集与锚点设特定颜色
解决Matlab中gscatter绘制t-SNE结果无法区分训练集与锚点的问题
你的问题出在两个地方:一是数据拼接和拼写有误,二是gscatter没有收到分组标签,导致所有点被归为同一类,只用一种颜色显示。
修正步骤与代码示例
- 修正数据拼接与拼写:把
xAnxhors改为正确的xAnchors,用[xtrain; xAnchors]拼接两个数据集作为t-SNE的输入。 - 创建分组标签:为训练集和锚点分别生成标识,比如训练集对应标签
1,锚点对应标签2,或者用分类变量更直观。 - 指定分组调用gscatter:将分组标签作为第三个参数传入
gscatter,还可以自定义颜色。
完整代码如下:
% 修正拼写与数据拼接 combined_data = [xtrain; xAnchors]; Y = tsne(combined_data); % 创建分组标签:训练集为1,锚点为2 group_labels = [ones(size(xtrain, 1), 1); 2*ones(size(xAnchors, 1), 1)]; % 调用gscatter并指定颜色,比如训练集用蓝色,锚点用红色 gscatter(Y(:,1), Y(:,2), group_labels, 'br', 'xo'); legend('训练集', '锚点'); xlabel('t-SNE维度1'); ylabel('t-SNE维度2'); title('t-SNE结果可视化(区分训练集与锚点)');
代码说明
group_labels:长度和拼接后的数据行数一致,确保每个点都有对应的分组标识。'br':指定两组点的颜色分别为蓝色(b)和红色(r),你可以替换成其他Matlab支持的颜色代码(比如'gk'代表绿色和黑色)。'xo':指定两组点的标记分别为叉号(x)和圆圈(o),增强区分度。- 最后添加图例、坐标轴标签和标题,让图表更清晰。
内容的提问来源于stack exchange,提问作者user9010429
相关产品推荐
相关产品推荐

