t-sne разброс сюжета с легендой - PullRequest
0 голосов
/ 12 сентября 2018

мой код

X: набор данных без ответа

y: ответ (0,1,2 или 3)

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE
X_reduced = TSNE(n_components=2, perplexity=113.0,random_state=0).fit_transform(X)
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y, cmap='Greens')
plt.legend(["A","B","C","D"], loc='best')

тогда я получил это.

Но я хочу, чтобы «легенды» с A, B, C, D соответствовали каждому цвету (от светло-зеленого до темно-зеленого)

Буду признателен, если вы ответите на этовопрос.

1 Ответ

0 голосов
/ 13 сентября 2018

Если y обозначает категорию. тогда самый простой способ состоит в том, чтобы зациклить различные значения y и построить точки со стандартным plt.plot при передаче в метке:

# make a mapping from category to your favourite colors and labels
category_to_color = {0: 'lightgreen', 1: 'lawngreen', 2:'limegreen', 3: 'darkgreen'}
category_to_label = {0: 'A', 1:'B', 2:'C', 3:'D'}

# plot each category with a distinct label
fig, ax = plt.subplots(1,1)
for category, color in category_to_color.items():
    mask = y == category
    ax.plot(X_reduced[mask, 0], X_reduced[mask, 1], 'o', 
            color=color, label=category_to_label[category])

ax.legend(loc='best')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...