聚类算法之DBScan(Java实现)
2023-09-14 09:13:32 时间
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算法的核心代码:
package orisun;
import java.io.File;
import java.util.ArrayList;
import java.util.Vector;
import java.util.Iterator;
public class DBScan {
double Eps=3; //区
相关文章
- [Java 基础] 使用java.util.zip包压缩和解压缩文件
- 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)
- Java实现 蓝桥杯 算法训练 天数计算
- Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
- Java实现 蓝桥杯 算法提高最小方差生成树
- java实现 蓝桥杯 算法训练 Password Suspects
- Java实现 蓝桥杯VIP 算法提高 Torry的困惑(提高型)
- Java实现 蓝桥杯VIP 算法提高 乘法运算
- Java实现 蓝桥杯VIP 算法提高 企业奖金发放
- Java实现 蓝桥杯VIP 算法提高 任意年月日历输出
- Java实现 蓝桥杯VIP 算法提高 三角形面积
- Java实现 蓝桥杯VIP 算法训练 简单加法
- Java实现 蓝桥杯VIP 算法训练 Hanoi问题
- Java实现 蓝桥杯VIP 算法训练 最长字符串
- Java实现 蓝桥杯VIP 算法提高 十进制转八进制数
- Java实现 蓝桥杯VIP 算法训练 寂寞的数
- Java实现 蓝桥杯 算法提高 三进制数位和
- Java实现 蓝桥杯 算法提高 求arccos值
- Java实现 蓝桥杯 算法训练 未名湖边的烦恼
- Java实现 蓝桥杯 算法训练 前缀表达式
- Java实现 蓝桥杯 算法训练 最小乘积
- Java实现算法提高十进制数转八进制数
- Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
- Java工具类--雪花算法生成全局唯一ID
- Foxit PDF SDK 8.4.1 for Linux (Java Library) Crack