我正在为没有标签的 kmeans 聚类寻找准确的 python 代码。有人知道吗?没有内置功能也没关系。手工制作也可以
Kmeans 聚类的准确性
准确度是比较真实标签和预测标签的量度。K-Means 是一种无监督聚类算法,其中不存在预测标签。因此,准确率不能直接应用于 K-Means 聚类评估。但是,您可以使用两个指标示例来评估您的集群。
平方和簇内
第一个是簇内平方和(WCSS),它测量簇内所有点到簇中心(称为簇质心)的平方平均距离。
要计算这一点,您可以首先找到给定点与分配该点的聚类中心之间的欧几里得距离。然后对集群中的每个点重复此过程,然后对集群的值求和并除以点数。最后计算所有集群的平均值。这将为您提供聚类平方和内的平均值。
该测量可以根据到集群中心的平均距离来指示集群内的点的可变性。较大的平方和可能表示一个非常大的散布簇。一个小的平方和可以表示一个小而紧凑的集群,点的属性几乎没有变化。这种测量有时称为内聚性,因为它测量该集群中数据点之间的相似性。
簇之间的平方和
第二个指标是簇间平方和 (BCSS),它测量所有簇质心之间的平方平均距离。
要计算这一点,您可以找到从给定聚类质心到所有其他聚类质心的欧几里德距离。对所有集群重复此操作。然后,将所有值相加。这将为您提供簇间平方和。您可以除以聚类数来计算聚类平方和之间的平均值。
该测量可以指示所有集群之间的变化。较大的数字可以表示分散的集群。少量可以表示彼此靠近的集群。这种测量有时称为分离,因为它测量集群的分离。
其他资源
您还可以查看结合了凝聚力和分离度的轮廓系数。并且肘部方法可用于帮助您确定最佳 K 值。
检查k-means 聚类的局限性。如果您想深入了解 WCSS 和 BCSS,请查看此可汗学院视频:
根据您使用的编程语言,可能有一些包可帮助您评估集群。R有kmeans,它的属性包括insidess和betweenss。对于 Python,Sklearn 的 k-means 实现具有惯性,即“训练集中所有观测值到最近质心的距离平方和”。
考虑不同的算法
如果您希望测量给定数据集上预测的准确性,这将有助于定义其基本事实。如果您有基本事实,可能会有更好的算法用于对结果进行建模。