Я пытаюсь построить некоторые данные и хочу уменьшить код. На самом деле у меня есть функциональный код, но с большим количеством строк, которые мне нужны.
Мой код:
cnt = 150
for cluster in range(2,6):
model = AgglomerativeClustering(n_clusters=cluster, affinity='euclidean', linkage='average')
model.fit(X)
labels = model.labels_
cnt += 1
plt.subplot(cnt)
plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color='red')
plt.scatter(X[labels==1, 0], X[labels==1, 1], s=1, marker='o', color='blue')
plt.scatter(X[labels==2, 0], X[labels==2, 1], s=1, marker='o', color='green')
plt.scatter(X[labels==3, 0], X[labels==3, 1], s=1, marker='o', color='purple')
plt.scatter(X[labels==4, 0], X[labels==4, 1], s=1, marker='o', color='orange')
plt.title('N. Clust: '+str(cluster))
plt.suptitle('Linkage: average')
plt.show()
Но это не очень хороший вариант, потому что эта строка plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color='red')
слишком много раз.
Я пробую некоторые варианты, но не могу решить их, и я знаю, что это легко ...
cnt = 150
colors = ['red','blue','green','purple','orange']
for cluster in range(2,6):
model = AgglomerativeClustering(n_clusters=cluster, affinity='euclidean', linkage='average')
model.fit(X)
labels = model.labels_
cnt += 1
plt.subplot(cnt)
for r in range(cluster):
plt.scatter(X[labels==0, 0], X[labels==0, 1], s=1, marker='o', color=colors[r])
plt.show()
Может кто-нибудь помочь мне? Большое спасибо!