如何绘制MNIST数据集(或含10个预测维度的其他数据集)的预测结果?
10维预测向量转3D可视化的实用方法
一、通用降维算法(直接映射)
PCA(主成分分析):最省心的线性降维方案,能最大程度保留数据的核心差异。操作步骤:
- 把所有样本的10维预测向量整理成一个N×10的矩阵(N是样本总数)
- 可选:如果各维度数值范围差异大,对矩阵做标准化处理
- 用PCA工具(比如sklearn里的
sklearn.decomposition.PCA)将矩阵降到3维,每个样本就能得到对应的(x,y,z)坐标 - 直接用你已有的3D绘图代码渲染这些点即可
要是你的预测向量是softmax输出的概率(每个维度都在0-1之间),标准化步骤可以省略。
t-SNE:适合数据存在非线性聚类结构的场景,能把相似样本在3D空间里聚到一起,不同类样本拉开距离。唯一缺点是计算量比PCA大,样本量太大时速度会慢。用法和PCA一致,输入10维向量后直接输出3维坐标用于绘图。
二、自定义类别映射(贴合业务逻辑)
因为你的向量是10类的预测结果,完全可以自己制定映射规则,让3维坐标的含义更直观:
- 分组加权求和:把10个类别按语义关联分成3组,每组对应一个3维分量。比如分类是动物的话,将哺乳动物归为一组计算x值,鸟类归为一组计算y值,爬行动物归为一组计算z值,每组内的类别置信度相加就是对应坐标值。这样每个坐标分量都有实际意义,看3D图时能直接对应到类别组的预测倾向。
- 硬分类固定坐标:如果只关心最终预测的类别(取置信度最高的那个),可以给每个类别分配一个唯一的3D点。比如类1对应(1,0,0),类2对应(0,1,0),类3对应(0,0,1),剩余类别用(1,1,0)、(1,0,1)这类组合,10个类别足够分配。这样相同类别的样本会落在同一个点上,能一眼看出各类别的分布数量。
三、模型嵌入学习(适配深度学习场景)
如果用的是深度学习模型,可以在训练时添加一个3维嵌入层,让模型自主学习将10维预测向量映射到3维空间,同时约束同类样本的嵌入点距离更近、不同类的更远。这种方法需要修改模型结构,但可视化结果会更贴合模型的决策逻辑。
内容的提问来源于stack exchange,提问作者ZeroorOne
相关产品推荐
相关产品推荐

