我试图做一个kmeans输出的散点图,它将同一主题的句子聚类在一起。我面临的问题是将属于每个聚类的点绘制成某种颜色。
sentence_list=["Hi how are you", "Good morning" ...] #i have 10 setences
km = KMeans(n_clusters=5, init='k-means++',n_init=10, verbose=1)
#with 5 cluster, i want 5 different colors
km.fit(vectorized)
km.labels_ # [0,1,2,3,3,4,4,5,2,5]
pipeline = Pipeline([('tfidf', TfidfVectorizer())])
X = pipeline.fit_transform(sentence_list).todense()
pca = PCA(n_components=2).fit(X)
data2D = pca.transform(X)
plt.scatter(data2D[:,0], data2D[:,1])
km.fit(X)
centers2D = pca.transform(km.cluster_centers_)
plt.hold(True)
labels=np.array([km.labels_])
print labels
我的问题是在下面的代码plt.scatter();参数c应该使用什么?
1.当我在代码中使用c=labels
时,我得到了这个错误:number in rbg sequence outside 0-1 range
2.当我设置c= km.labels_
时,我得到错误:ValueError: Color array must be two-dimensional
plt.scatter(centers2D[:,0], centers2D[:,1],
marker='x', s=200, linewidths=3, c=labels)
plt.show()
3条答案
按热度按时间e0uiprwp1#
现在你有不同的颜色为不同的集群。
798qvoo82#
color=
或c=
属性应该是matplotlib颜色,如plot
文档中所述。要将一个整数标签Map到一个颜色,
如果不想使用内置的单字符颜色名称,可以使用其他颜色定义。参见matplotlib颜色的文档。
2lpgd9683#
它应该工作: