聚类算法的性能指标是什么?

What are the performance metrics for Clustering Algorithms?

我正在研究 Kmeans 聚类,但与监督学习不同,我无法计算聚类算法的性能指标。训练数据后如何进行准确率?

对于kmeans你可以找到它的inertia_。这可以让您了解 kmeans 算法的效果如何。

kmeans = KMeans(...)
# Assuming you already have fitted data on it.
kmeans.inertia_ # lesser is better

或者,如果您调用 score() 函数,它会给您相同的结果,但符号将为负。正如我们假设更高的分数意味着更好,但对于 kmeans 较小的 inertia_ 更好。因此,为了使它们一致,对其应用了额外的否定。

# Call score with data X
kmeans.score(X) # greater is better

这是分析 kmeans 性能的最基本形式。实际上,如果你把集群的数量取得太高,score() 会相应增加(换句话说,inertia_ 会减少),因为 inertia_ 只不过是每个集群距离的平方和指向其对应的集群的质心,它被分配到哪个集群。因此,如果您过多地增加簇的数量,则总距离的平方和将减少,因为每个点的质心都非常接近它。虽然,在这种情况下,聚类的质量很糟糕。因此,为了更好地分析,您应该找出 silhouette score 或在这种情况下更好地使用 silhouette diagram

您将在此笔记本中找到所有实现:09_unsupervised_learning.ipynb

与此存储库对应的书籍是:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition。这是一本了解所有这些细节的好书。