聚类算法之DBScan(Java实现)

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法之DBScan(Java实现)相关的知识,希望对你有一定的参考价值。

DBScan是一种基于密度的聚类算法,它有一个核心点的概念:如果一个点,在距它Eps的范围内有不少于MinPts个点,则该点就是核心点。核心和它Eps范围内的邻居形成一个簇。在一个簇内如果出现多个点都是核心点,则以这些核心点为中心的簇要合并。

下图给出DBScan的聚类结果:在这里插入图片描述
可以看到DBScan可以发现噪声,即它把(3,14)判定为噪声。

到这里你一定有个疑问:为什么(8,3)一个点形成了一个簇,不是一个簇最少应该包含MinPts个点吗,如果只有一个点,那(8,3)应该归为噪声才对呀?

其实你仔细阅读下面的代码就会发现原因。在算法运行的早期,(8,3)、(5,3)、(8,6)、(10,4)被划分为一个簇,并且此时判定(8,3)是核心点—这个决定不会再更改。只是到后来(5,3)、(8,6)、(10,4)又被划分到其他簇中去了。

下面给出DBScan算法的核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

以上是关于聚类算法之DBScan(Java实现)的主要内容,如果未能解决你的问题,请参考以下文章

聚类算法之DBSCAN

DBSCAN聚类算法

人工智能系列 之机器学习DBSCAN聚类算法

无监督学习DBSCAN聚类算法原理介绍,以及代码实现

深度解读 python 实现 dbscan算法

DBSCAN密度聚类算法(理论+图解+python代码)