【问题标题】:How to evaluate K-Means Clustering since automatic indexes of clusters don't match true labels?由于集群的自动索引与真实标签不匹配,如何评估 K-Means 聚类?
【发布时间】:2021-01-29 12:59:08
【问题描述】:

由于集群的自动索引可能是原始标签的排列,我们如何衡量 K-Means 聚类算法的准确性(例如,生成混淆矩阵)?

【问题讨论】:

  • 能否添加示例代码?
  • sklearn 有专门的homogeneity_score 用于此类情况
  • @SergeyBushmanov 哦,这是完美的答案!谢谢!

标签: python scikit-learn cluster-analysis k-means multilabel-classification


【解决方案1】:

我也不完全明白你的意思。您的原始标签可能是基本事实标签。 k-means 提供的聚类结果通常是一个整数,其范围与您希望 k-means 算法给您的 k 个聚类一样多。

我通常使用pandas.crosstab 函数来可视化groundtruth 标记的本地化,使用kmeans 标记和交叉制表。

为了更好的可视化,您可能需要使用以下内容:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(30,10))

# plot the heatmap for correlation matrix
ax = sns.heatmap(crosstab_groundtruth_kmeans.T, 
                square=True, annot=True, fmt='.2f')

ax.set_yticklabels(
    ax.get_yticklabels(),
    rotation=0);

out:

祝你好运!~

【讨论】:

    【解决方案2】:

    k-means 是一种聚类(分组算法,不用于分类),因此无法检查和分析准确性。 k-means 的主要概念是找到一组数据点,使“簇间”距离最大化(并且没有标签的概念,因此您无法获得准确度矩阵)。更多见解:https://scikit-learn.org/stable/modules/clustering.html#k-means

    必须使用sklearn.cluster.KMeans 中的predict 方法手动分析准确度(假设您希望可视化哪个集群由哪些数据点组成)。它基本上是“预测 X 中每个样本所属的最近聚类”。 (from documentation)

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 2018-06-07
      • 2015-03-06
      • 2020-06-26
      • 2016-02-04
      • 2023-03-21
      • 2012-11-06
      • 2022-01-23
      • 2014-02-08
      相关资源
      最近更新 更多