如何在python中为t-SNE添加标签

时间:2017-10-18 21:38:00

标签: python matplotlib machine-learning

我使用t-SNE搜索具有七个特征的数据集上的关系。

enter image description here

我使用字典为图中的y标签添加颜色:

encoding = {'d0': 0, 'd1': 1, 'd2': 2, 'd3': 3, 'd4': 4, 'd5': 5, 'd6': 6, 'd7': 7}

plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=y['label'].apply(lambda x: city_encoding[x]))
plt.show()

这里的问题是不清楚哪种颜色对应哪个标签。数据集实际上有100多个标签,因此我不想手动处理。

enter image description here

1 个答案:

答案 0 :(得分:4)

您可以在同一轴上单独绘制每个类别,让Matplotlib生成颜色和图例:

fig, ax = plt.subplots()

groups = pd.DataFrame(X_tsne, columns=['x', 'y']).assign(category=y).groupby('category')
for name, points in groups:
    ax.scatter(points.x, points.y, label=name)

ax.legend()

对于随机生成的X,这会给出

enter image description here