如何在一个可视化图表中比较两组高维数据的绘制方法?

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

Image

上面的示例图展示了我希望达到的效果:

  1. 第一张图展示了原始真实图像的分布
  2. 第二张图展示了GAN1的结果与真实数据重叠得不好
  3. 第三张图展示了GAN2的结果与真实数据重叠得很好。

有人能提供一些指导,告诉我用Python绘制这样的图表的好方法吗?并提供一些使用以下代码片段作为示例数据/代码(摘自这里)的代码来绘图?

from sklearn.manifold import TSNEfrom keras.datasets import mnistimport seaborn as snsimport pandas as pd (x_train, y_train), (_ , _) = mnist.load_data()x_train = x_train[:3000]y_train = y_train[:3000]x_mnist = reshape(x_train, [x_train.shape[0], x_train.shape[1]*x_train.shape[2]])tsne = TSNE(n_components=2, verbose=1, random_state=123)z = tsne.fit_transform(x_mnist)df = pd.DataFrame()df["y"] = y_traindf["comp-1"] = z[:,0]df["comp-2"] = z[:,1]sns.scatterplot(x="comp-1", y="comp-2", hue=df.y.tolist(),                palette=sns.color_palette("hls", 10),                data=df).set(title="MNIST data T-SNE projection")

回答:

你可以尝试使用降维方法,如PCAt-SNELLEUMAP,将图像的维度降至2,然后绘制图像,如你所指出的那样。

以下是Python中的示例代码:

import numpy as npimport matplotlib.pyplot as pltfrom sklearn.decomposition import PCAfrom sklearn.manifold import TSNEX_real = ... # 真实图像,例如1000个作为向量的图像 X_gan = ... # 来自GAN的生成图像,具有相同形状X = np.vstack([X_real, X_gan]) # 垂直堆叠矩阵X_pca = PCA(n_components=50).fit_transform(X) # 对于高维数据,建议先降低维度(例如50),然后再使用t-SNEX_embedded = TSNE(n_components=2).fit_transform(X_pca)# 使用相应的类和方法标签绘制点plt.scatter(...)

除了t-SNE,你也可以直接使用PCA或上述提到的其他方法之一。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注