问题描述
由于聚类的自动索引可能是原始标签的排列,我们如何测量K-Means聚类算法的准确性(例如,生成混淆矩阵)?
解决方法
我也不完全知道你的意思。您最初的标签也许就是地面真理标签。 k-means提供的聚类结果通常是一个整数,其范围与k-means算法希望给您的k个聚类一样多。
我通常使用pandas.crosstab
函数来可视化使用带有交叉表的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);
祝你好运!〜
,k均值是一个聚类(分组算法,不用于分类),因此,检查和分析准确性是不可行的。 k均值的主要概念是找到一个数据点集群,该数据点可以最大程度地提高“集群之间”的距离(并且不具有标签的概念,因此无法获得准确性矩阵)。更多见解:https://scikit-learn.org/stable/modules/clustering.html#k-means
必须使用predict
中的sklearn.cluster.KMeans
方法来手动分析准确性(假设您要可视化哪个簇由哪些数据点组成)。它基本上是“预测X中每个样本所属的最近的簇”。 (from documentation)