一次聚类引发的一系列问题(前言)

最近在写一个新功能的时候遇到了一系列的问题,查资料写测试案例,花费良久才得以完成,在此记录下来整个过程以便后续查看。

首先,所做的功能是客户给了一堆的问题,让我们把这些问题相似的给整理在一起,这就用到了聚类。我们使用的是基于密度的聚类,但是做了一些修改,对基于密度的聚类不懂的可以参考https://blog.csdn.net/denghecsdn/article/details/82793940

其次,说一下我们聚类的大体流程。

  一、生成二维数组,计算两个问法之间的距离,将距离保存至数组中。

  二、计算截断距离,我们的截断距离是用于计算密度的,和标准的有所不同,标准的是使用半径。

  三、使用截断距离计算密度。

  四、按照密度从高到低排序,同时为每个点计算出邻点(密度大于它,并且离他最近的点,密度最大的点无邻点)

  五、计算中心点(密度大于给定密度,并且和其邻点的距离大于半径)

  六、将剩余点聚集到中心点上。有两种算法,一种是聚簇,即把可达的中心点连在一起都聚在最中心上,一种是聚点,不算可达点,例如 a点到b点的距离是0.4, b点到c点的距离是0.3 , a点到c点的距离是0.6,如果半径是0.5,那么聚簇就是b和c都会聚到a上,聚点就是b聚到a上,c作为一个新的聚点。

原文地址:https://www.cnblogs.com/fiftyonesteps/p/11384166.html