DBSCAN 密度聚类 Python实现

DBSCAN是一种利用样本“密度”信息进行聚类的算法,有两个超参数,一个是核心点的邻域半径,一个是核心点邻域内拥有的点的个数(包括自己)。

看了网上不少算法流程,大多说得模棱两可。。有的还是错的。。比如将同一个点分入到了两个不同的类,然后把这个两个类“结合”成一个。

我理解的原理就是:

①由邻域半径和点的个数,找到核心点的集合,以西瓜书为例,假设是[3,5,6,8,9,13,14,18,19,24,25,28,29]。

②从该点随机抽出一个点,比如8,找到8邻域内的所有点:[6,7,8,18,19],与整个样本集合取交集,得到一个簇[6,7,8,18,19]。

③把8从核心点去掉,把该簇从整个样本去掉。找到8邻域内中的核心点,这里是[6,18,19],再分别以6/18/19,重复以上过程。

④直到最后找到的点不是核心点。

是个递归的过程

如图所示:从8出发,找到了[6,7,18,19],7不是核心点,不管,加入簇并从整体样本剔除。再从6出发,找到了[8,19,18,23],8,19,18,已经从整个样本剔除了,所以与整个样本的交集,就是23号,23号不是核心点,所以对于6的搜索完成了,再把23加入到簇并从整个样本剔除。再从18出发,找到了[6,8,12,19,20],6,8,19,已经从整个样本剔除了,交集只有12、20,12和20,又不是核心点,所以对于18的搜索完成,12和20加入到簇,并从整个样本剔除。最后从19出发,找到[8,18,20,10],与整个样本交集只有10,(虽然19也找到了20,但是20已经在簇里面了,而且没在整个样本,交集取不到),所以把10加入到簇。这样,一个簇就聚类完成。结果就是西瓜书的一个簇:

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值