首页 > 解决方案 > 如何在一个可视化图中绘制两组高维数据进行比较?

问题描述

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

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

有人可以提供一些指导,什么是用 Python 绘制这样的东西的好方法,并提供一些示例代码?

标签: machine-learningdata-visualizationpcamnistdimensionality-reduction

解决方案


您可以尝试使用PCAt-SNELLEUMAP等降维方法将图像的维度减少到 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。


推荐阅读