是 kmeans_lables 或 kmeans.predict 为数据集中的每个样本分配标签

Posted

技术标签:

【中文标题】是 kmeans_lables 或 kmeans.predict 为数据集中的每个样本分配标签【英文标题】:is kmeans_lables or kmeans.predict to assign label for each sample in dataset 【发布时间】:2022-01-04 01:58:26 【问题描述】:

在对数据帧应用 kmeans 聚类后,我想为数据帧中的每个样本添加簇号。首先,我想知道 kmeans.lables_ 和 kmeans.predict() 是否返回相同的结果?我都试过了,但我发现不匹配。我想知道用哪一个?

from sklearn.cluster import KMeans 
kmeans5 = KMeans(n_clusters=5, max_iter=20, verbose=1) 
kmeans5.fit(wdf)
clusters5 = kmeans5.predict(wdf)

同样的方法,我初始化了kmeans3和kmeans2,得到了clusters3和clusters2然后我尝试了这个

wdf2=wdf.copy()
wdf2['c5']=clusters5
wdf2['l5']=kmeans5.labels_
wdf2['c3']=clusters3
wdf2['l3']=kmeans3.labels_
wdf2['c2']=clusters2
wdf2['l2']=kmeans2.labels_

我在wdf2[['c5','l5','c3','l3','c2','l2']].head(7)之后得到了以下内容,可以看到c5和l5是不匹配!。

id      c5  l5  c3  l3  c2  l2
40419   0   2   2   2   1   1
41060   3   0   2   2   1   1
43284   3   3   2   2   1   1
45664   3   1   0   0   1   1
52014   3   0   2   2   1   1
53488   3   1   0   0   1   1
53895   0   2   2   2   1   1

谢谢

【问题讨论】:

【参考方案1】:

它们应该在训练数据集上保持一致。

来自docs:

“此外,估计器将在最后一次迭代后重新分配标签,以使标签_与训练集上的预测一致。”

【讨论】:

是聚类,所以我使用的是fall数据集。我不知道为什么我得到不同的结果,你认为顺序不同吗? 如果您发布您正在使用的代码,那么我们可以为您提供更好的帮助。 我添加了代码并编辑了帖子

以上是关于是 kmeans_lables 或 kmeans.predict 为数据集中的每个样本分配标签的主要内容,如果未能解决你的问题,请参考以下文章

Sklearn.KMeans:如何避免内存或值错误?

DBSCAN与kmeans,OPTICS区别?

为啥同组聚类数据点在 Kmeans 聚类中落得较远或分散?

k均值和kmeans的区别

kmeans聚类算法

Spark KMeans 无法处理大数据吗?