我使用haifengl/smile
并且我需要获得最佳簇数。
我正在使用CLARANS
需要指定要创建的集群数量的地方。我认为也许有一些解决方案可以整理出例如从 2 到 10 个集群,查看最佳结果并选择具有最佳结果的集群数量。肘部方法如何做到这一点?
我使用haifengl/smile
并且我需要获得最佳簇数。
我正在使用CLARANS
需要指定要创建的集群数量的地方。我认为也许有一些解决方案可以整理出例如从 2 到 10 个集群,查看最佳结果并选择具有最佳结果的集群数量。肘部方法如何做到这一点?
要确定适当数量的集群,以使集群内的元素彼此相似而与其他组中的元素不同,可以通过应用各种技术来找到,例如:
Gap Statistic - 将不同 k 值的集群内变化的总和与其在数据的空参考分布下的预期值进行比较。
轮廓方法最佳聚类数 k 是在 k 的一系列可能值上最大化平均轮廓的方法。
平方和法
有关更多详细信息,请阅读有关此主题的 sklearn文档。
肘部方法不是自动的。
您计算所需 k 范围的分数,绘制它,然后在视觉上尝试找到一个“肘部”——这可能会或可能不会起作用。
因为 x 和 y 彼此之间没有“正确”的关系,所以要注意绘图的解释(以及任何自动化的几何尝试)取决于绘图的缩放比例并且本质上是主观的。最后,“肘部”的整个概念可能是有缺陷的,并且在这种形式下并不合理。我宁愿寻找更高级的措施,您可以在其中争论最大值或最小值,尽管一些“明显更好的 k”的概念是可取的。
查找集群的方法:
1-剪影方法:
使用分离和内聚或仅使用已实施的方法,最佳聚类数是具有最大轮廓系数的聚类。* 轮廓系数范围从 [-1,1] 和 1 为最佳值。 使用 scikit-learn 的剪影方法示例。
2-肘法(您可以自动使用肘法)
肘部方法是聚类数与距离的平均平方和之间的图。为了在 python 中自动应用它,python 中有一个库 Kneed 来检测图中的膝盖。膝盖仓库