我正在研究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_unsuprevised_earning.ipynb
与这个知识库相对应的书是:《使用Scikit Learn进行机器学习》、《Keras》和《TensorFlow》,第2版。了解所有这些细节是一本很棒的书。