解决K均值初始化挑战的有效策略

精明有效的策略解决K均值初始化挑战

使用n_init和K均值

image by Flo

简介

K均值是机器学习中广泛使用的聚类算法,具有许多优点,但也存在重要挑战。在本文中,我们将深入探讨其局限性,并提供直接有效的解决方案。

K均值如何工作?

K均值是一种将数据划分为K个簇的聚类算法。它随机初始化K个质心,然后将每个数据点分配给最近的质心。根据分配的点的均值重新计算质心,并重复此过程直至收敛。

我在下面用t分布随机邻居嵌入(一种降维技术)进行了说明。每个簇用颜色表示。

K均值聚类通过T-SNE,图片来源:Flo

K均值开始时通过随机选择质心,这意味着结果可能会因此初始选择而有所不同。如果这些质心选择不恰当,可能会产生不准确的簇。为了解决这个问题,可以采用两种策略:”n_init”和”K均值++”。

在下一节中,我们将详细介绍整个过程,从确定最佳的’K’值到训练模型。

选择最佳的K

K代表簇的数量,在K均值算法中非常重要。一个次优的K可能会导致不精确的聚类。确定合适的K通常并不直观,通常需要领域知识和分析技术的结合。我们将使用两种技术称为“弯曲拐点法”和“轮廓系数”。

弯曲拐点法

一种常见的方法是“弯曲拐点法”,但还有其他各种技术和考虑因素需要牢记。让我们深入了解如何为您的数据选择最佳K。

from sklearn.metrics import silhouette_scorecost = []silhouettes = []K = range(2, 20)for k in K:    kmeans = KMeans(n_clusters=k, n_init=10)…