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

How to plot two sets of high dimensional data in one visualization plot for comparision?

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

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

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

您可以尝试使用 PCA, t-SNE, LLE or UMAP 等降维方法将图像的维度降低到 2 并按照您已经指出的方式绘制图像。

这是 python 中的一些示例代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
X_real = ... # real images e.g. 1000 images as vectors 
X_gan = ... # generated images from GAN with same shape
X = np.vstack([X_real, X_gan]) # stack matrices vertically
X_pca = PCA(n_components=50).fit_transform(X) # for high-dimensional data it's advisible to reduce the dimension first (e.g. 50) before using t-SNE
X_embedded = TSNE(n_components=2).fit_transform(X_pca)

# plot points with corresponding class and method labels
plt.scatter(...)

您可以直接使用 PCA 或上述其他方法之一,而不是 t-SNE。