【问题标题】:How visualize output cluster with each cluster unique colors如何使用每个集群独特的颜色可视化输出集群
【发布时间】:2016-07-26 03:09:39
【问题描述】:

我只是python中的新手

我在互联网上搜索执行 K-means 使用 scikit 的代码,我尝试修改代码以可视化 plot 3d 并为每个集群(3 个集群)着色,但结果是所有集群具有相同颜色,代码和如下图:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.cluster import KMeans
from collections import Counter
from mpl_toolkits.mplot3d import Axes3D
from pylab import *

X = np.array([[1, 2, 5],
              [5, 8, 2],
              [1.5, 1.8, 6],
              [8, 8, 9],
              [1, 0.6, 10],
              [2.5, 3.8, 6],
              [2.5, 5.8, 9],
              [5, 8, 3],
              [4, 0.6, 7],
              [2.5, 1.8, 4.6],
              [6.5, 1.8, 12],
              [7, 8, 9],
              [2, 0.6, 7],
              [5.5, 1.8, 4],
              [4.8, 6.9, 6],
              [4.9, 9.8, 2],
              [9, 11, 12]])


cluster_num = 3

kmeans = KMeans(n_clusters=cluster_num)
kmeans.fit(X)

centroids = kmeans.cluster_centers_
labels = kmeans.labels_

print "centroids : "
print centroids
print "labels : "
print labels

colors = ["g.","r.","c.","y."]

color = np.random.rand(cluster_num)

c = Counter(labels)


fig = figure()
ax = fig.gca(projection='3d')


for i in range(len(X)):
    print("coordinate:",X[i], "label:", labels[i])
    print "i : ",i
    print "color[labels[i]] : ",color[labels[i]]
    ax.scatter(X[i][0], X[i][1], X[i][2], c=color[labels[i]])


for cluster_number in range(cluster_num):
  print("Cluster {} contains {} samples".format(cluster_number, c[cluster_number]))

ax.scatter(centroids[:, 0],centroids[:, 1], centroids[:, 2], marker = "x", s=150, linewidths = 5, zorder = 100)

plt.show()

我怎样才能让每个集群都有自己的颜色?谢谢

【问题讨论】:

    标签: python matplotlib scikit-learn


    【解决方案1】:

    现在color = np.random.rand(cluster_num) 正在生成三个随机数,而在ax.scatter(X[i][0], X[i][1], X[i][2], c=color[labels[i]]) 中,您正试图将这些随机数分配为颜色。

    相反,您可以更改color = ["g", "r", "b"],使第一个集群为绿色,第二个为红色,第三个为蓝色。

    对于聚类中心,传递相同的参数:

    ax.scatter(centroids[:, 0],centroids[:, 1], centroids[:, 2], marker = "x", s=150, linewidths = 5, zorder = 100, c=color)
    

    【讨论】:

    • 嗨@ayhan,如何在散点图中显示每个点的坐标?谢谢
    猜你喜欢
    • 2021-01-19
    • 2020-11-01
    • 2014-04-18
    • 2018-07-11
    • 2020-03-30
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    相关资源
    最近更新 更多