在集群中动态选择集群数量

时间:2019-01-25 05:19:24

标签: python scikit-learn cluster-analysis

编辑该问题的撰写对群集技术的了解很少,而事后看来,它甚至不符合Stack Overflow网站的标准,但是SO不会让我删除它,说其他人已经投入了时间和能量(此有效点)中的内容,如果我继续删除,我可能会暂时无法提出问题,因此,我正在更新此问题,使其具有相关性,以便其他人可以从中学习。仍然严格不遵循SO准则,因为我本人会将此标记为过于广泛,但是在当前状态下它没有任何价值,因此为其添加一点价值将是值得的。

更新的对话主题 问题是在聚类算法中选择最佳的聚类数量,该算法将对作为图像轮廓检测输入的各种形状进行分组,然后将聚类属性的偏差标记为“噪波”或“异常”。当时的问题是,所有数据集都是不同的,从中获得的形状也不同,并且每个数据集的形状数目也将有所不同。正确的解决方案是继续使用DBSCAN(带有噪声的基于密度的空间聚类应用程序)应用程序,该应用程序可以在我当时不知道的scikit-learn中找到,该方法可以正常工作,现在该产品已经在测试中,我只是想回到此位置并更正这个旧错误。

旧问题

旧标题在kmeans聚类中动态选择k

我必须生成一个k-means聚类模型,其中事先不知道类别的数量,有没有一种方法可以根据聚类中的欧式距离自动确定k的值。

我希望它如何工作。从k的值开始,执行聚类,查看其是否满足阈值标准并相应地增加或减少k。问题是与框架无关的,如果您有使用Python以外的语言编写的Idea或实现,也请分享。

我在研究问题https://www.researchgate.net/publication/267752474_Dynamic_Clustering_of_Data_with_Modified_K-Means_Algorithm时发现了这个问题。 我找不到它的实现。

我正在寻找类似的想法来选择最好的并自己实现,或者可以移植到我的代码中的实现。

编辑 我现在正在考虑的想法是:

  1. 肘法

  2. X均值聚类

3 个答案:

答案 0 :(得分:2)

您可以使用肘部方法。此方法的基本作用是使用k的各种值(不包含聚类),然后计算每个点到聚类中心的距离。达到一定数量后,不会有任何重大改善,您可以将k值取为k(群集数)。

enter image description here

您可以参考以进一步阅读this链接。

答案 1 :(得分:0)

您遍历K的值,并使用Silhouette Score来检查聚类的有效性

答案 2 :(得分:0)

您可以迭代任意范围内k个值的分数。您可以检查每个k值的轮廓分数,也可以计算每个k值的SSE值之间的差。在0.4 * k值个数之后,差异最大的地方就是弯头。