Python在Kmeans中计数标签的出现

时间:2019-01-07 15:10:37

标签: python count k-means

我正在尝试将Sklears Kmeans中的标签列表与另一个数据集的预测标签进行比较。但是标签列表的大小不同,所以我希望每个标签都出现。

所以我已经尝试使用Counter,但是我没有得到我想要的。目前,我正在使用np.unique,仍然存在一些问题。

例如:

X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])

kmeans = KMeans(n_clusters=4, random_state=0).fit(X)

Unique,count = np.unique(kmeans.labels_,return_index=True)

print(count) # [2 2 1 1] so far so good

New_Labels = kmeans.predict([[0, 4], [4, 4],[0,5],[1,6],[7,2],[4,0],[4,2]])

print(New_Labels) # [3 0 3 3 0 2 0] also good

Unique1,count1 = np.unique(Labels,return_index=True)

然后这就是我遇到的问题。

print(Unique1,count1) #[3 1 3]

如果群集的标签不存在,我希望标签计数的输出也说0。 所以我希望我的预测标签数是

[3 0 1 3]

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下列表推导,它遍历所有可能的群集分配以及.count每个元素的出现:

[l.count(i) for i in range(max(l)+1)]
[3, 0, 1, 3]