Machine learning 如何在一个可视化绘图中绘制两组高维数据进行比较?

Machine learning 如何在一个可视化绘图中绘制两组高维数据进行比较?,machine-learning,data-visualization,pca,mnist,dimensionality-reduction,Machine Learning,Data Visualization,Pca,Mnist,Dimensionality Reduction,我试图比较我从GAN(生成的对抗网络)生成的样本(即MNIST数字图像)。 对于我的第一个实验,GAN训练不成功,因此生成的样本与真实MNIST图像不相似。 在我的第二个实验中,GAN训练非常成功,因此生成的样本应该与真实的MNIST样本在可视化绘图中很好地重叠。 上面的示例图显示了我希望实现的目标: (1) 第一个图显示了原始真实图像的分布 (2) 第二幅图显示,GAN1的结果与实际数据没有很好的重叠 (3) 第三幅图显示,GAN2的结果与实际数据吻合良好 有人能提供一些指导吗?什么是用Py

我试图比较我从GAN(生成的对抗网络)生成的样本(即MNIST数字图像)。 对于我的第一个实验,GAN训练不成功,因此生成的样本与真实MNIST图像不相似。 在我的第二个实验中,GAN训练非常成功,因此生成的样本应该与真实的MNIST样本在可视化绘图中很好地重叠。

上面的示例图显示了我希望实现的目标: (1) 第一个图显示了原始真实图像的分布 (2) 第二幅图显示,GAN1的结果与实际数据没有很好的重叠 (3) 第三幅图显示,GAN2的结果与实际数据吻合良好


有人能提供一些指导吗?什么是用Python绘制类似内容的好方法,并提供一些示例代码?

您可以尝试使用降维方法,如,或者将图像的维数降低到2,然后按照您已经指出的那样绘制图像

以下是python中的一些示例代码:

将numpy导入为np
将matplotlib.pyplot作为plt导入
从sklearn.decomposition导入PCA
从sklearn.manifold导入TSNE
X_real=…#真实图像,例如1000个图像作为矢量
X_gan=…#从具有相同形状的GAN生成图像
X=np.vstack([X_real,X_gan])#垂直叠加矩阵
X_pca=pca(n_分量=50)。拟合_变换(X)#对于高维数据,建议在使用t-SNE之前先降维(例如50)
嵌入X_=TSNE(n_分量=2)。拟合变换(X_pca)
#使用相应的类和方法标签打印点
plt.散射(…)

您可以直接使用PCA或上述其他方法代替t-SNE。

谢谢您的指导。我觉得直接应用PCA并不能将不同的类分开足够远,所以tSNE似乎更好。但是,tSNE每次都会生成不同的绘图,因此我无法合并由不同tSNE运行生成的两个绘图。你能告诉我如何解决这个问题吗?这是tSNE的缺点之一,每次运行它都会产生不同的结果。您可以执行以下操作:使用不同的种子多次运行tSNE,使用标签为每次运行计算集群度量,并将其平均。聚类度量应该是“坏”的,这意味着不可能区分真实数据和虚假数据。或者,在单个类上运行PCA,例如仅1,然后查看是否可以区分真实数据和虚假数据。另一种可能是在真实数据上训练分类器,然后在伪数据上测试,或者反过来,在真实数据上训练伪测试。如果数据无法区分,则两组数据的性能应相同。