我正在尝试将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]
有人可以帮忙吗?
答案 0 :(得分:0)
您可以使用以下列表推导,它遍历所有可能的群集分配以及.count
每个元素的出现:
[l.count(i) for i in range(max(l)+1)]
[3, 0, 1, 3]