聚类算法的性能指标是什么?
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。这是一本了解所有这些细节的好书。
我正在研究 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。这是一本了解所有这些细节的好书。