微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

绘制属于同一类别的散点的平均值

如何解决绘制属于同一类别的散点的平均值

我创建了一个散点图,类似于可变自动编码器(VAE) mnist 散点图。

MNIST Mean plot for VAE

图的生成方式如下(z_mean的维数为(?,2)):

plt.scatter(z_mean[:,0],z_mean[:,1],c=y_test)

现在,我想绘制属于同一类的所有图的均值。 例如,如果我绘制了10个类别的10000个测试样本,我想绘制所有属于同一类别的图的平均值。因此,只需绘制10个点,每个点表示一个类(从0到9)即可。

解决方法

您可以计算每个y值的均值并将其存储到数组中。

以下代码首先创建一些随机测试数据,显示具有一定透明度的散点图,计算每组的均值,然后使用大点显示这些均值。它还使用“ tab10”作为颜色图,其颜色比默认的“ viridis”更鲜明。

import numpy as np
import matplotlib.pyplot as plt

N = 100
M = 10
z_mean = np.random.normal(np.tile(np.random.uniform(1,10,2 * M),N)).reshape(-1,2)
y_test = np.tile(np.arange(M),N)

plt.scatter(z_mean[:,0],z_mean[:,1],c=y_test,cmap='tab10',alpha=.3)

ys = np.unique(y_test)
means = np.array([np.mean(z_mean[y_test == y,:],axis=0) for y in ys])
plt.scatter(means[:,means[:,c=ys,s=200,edgecolors='black',cmap='tab10')
plt.colorbar()
plt.show()

example plot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。