python - 如何正确将Kmeans标签翻译为类别标签

标签 python scikit-learn cluster-analysis label

我一直在使用 Sklearn 的 Kmeans 实现

我一直在对一个有标签的数据集进行聚类,并且我一直在使用 sklearn 的 clustering metrics以测试聚类性能。

Sklearn 的 Kmeans 聚类输出如您所知,是 k_clusters 范围内的数字列表。然而我的标签是字符串

到目前为止,我对它们没有任何问题,因为来自 sklearn.metrics.cluster 的指标适用于混合输入(intstr 标签列表)。

但是现在我想使用 classification metrics 中的一些根据我收集的信息,输入 k_truek_pred 需要属于同一组。要么是 k 范围内的数字,要么是我的数据集正在使用的字符串标签。如果我尝试它,它会返回以下错误:

AttributeError:“bool”对象没有属性“sum”

那么,如何将 k_means 标签转换为其他类型的标签?或者甚至相反(字符串标签 -> 整数标签)。

我怎样才能开始实现它呢?由于 k_means 相当不确定,因此标签可能会因迭代而变化。有没有合法的方法可以正确翻译 Kmeans 标签?

编辑:

示例

对于 k = 4

kmeans 输出:[0,3,3,2,........0]

类标签:['CAT','DOG','DOG','BIRD',.......'CHICKEN']

最佳答案

聚类不是分类。

这些方法不会预测标签,因此您不得使用分类评估措施。这就像以每加仑英里数来衡量苹果的质量一样......

如果你坚持做错事(tm),那么使用匈牙利算法来找到最佳映射。但要注意:簇的数量和类的数量通常不会相同。如果是这种情况,使用这样的映射要么是不公平的负值(不映射额外的簇),要么是不公平的正值(将 !uktiple 簇映射到同一标签将认为 N 个点是 N 个簇“解决方案”最优)。最好只使用聚类措施。

关于python - 如何正确将Kmeans标签翻译为类别标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50889623/

相关文章:

java - ZeroTurnaround Process Executor (zt-exec) 进程在无限循环中等待输入,如何?

python - 高斯过程回归: standard deviation meaning

python - Scikit-Learn:加载和转储多标签 SVMlight 格式

python - 如何使用树状图处理大量数据

cluster-analysis - 来自分类或聚类结果的 ROC 曲线

python - 在脚本中转置矩阵时出现索引错误

python - 用括号中的数字Python替换字符串中的数字

python - PyQt4 setItemDelegateForRow 导致段错误

python - Predict_proba 不适用于我的高斯混合模型(sklearn,python)

python - python中的词聚类