聚类算法——python实现密度聚类(DBSCAN)

基于密度的聚类算法DBSCAN通过样本密度连接样本,形成聚类簇。核心对象是ε-邻域包含至少MinPts个样本的点。算法包括初始化核心对象集合,遍历样本,检查ε-邻域,构建聚类簇。最后展示Python代码实现及运行结果。
摘要由CSDN通过智能技术生成

算法思想

基于密度的聚类算法从样本密度的角度考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇得到最终结果。
几个必要概念:
ε-邻域:对于样本集中的xj, 它的ε-邻域为样本集中与它距离小于ε的样本所构成的集合。
核心对象:若xj的ε-邻域中至少包含MinPts个样本,则xj为一个核心对象。
密度直达:若xj位于xi的ε-邻域中,且xi为核心对象,则xj由xi密度直达。
密度可达:若样本序列p1, p2, ……, pn。pi+1由pi密度直达,则p1由pn密度可达。

大致思想如下:

  1. 初始化核心对象集合T为空,遍历一遍样本集D中所有的样本,计算每个样本点的ε-邻域中包含样本的个数,如果个数大于等于MinPts,则将该样本点加入到核心对象集合中。初始化聚类簇数k = 0, 初始化未访问样本集和为P = D。
  2. 当T集合中存在样本时执行如下步骤:
    2.1记录当前未访问集合P_old = P
    2.2从T中随机选一个核心对象o,初始化一个队列Q = [o]
    2.3P = P-o(从T中删除o)
    2.4当Q中存在样本时执行:
    2.4.1取出队列中的首个样本q
    2.4.2计算q的ε-邻域中包含样本的个数,如果大于等于MinPts,则令S为q的ε-邻域与P的交集,
    Q = Q+S, P = P-S
    2.5 k = k + 1,生成聚类簇为Ck = P_old - P
    2.6 T = T - Ck
  3. 划分为C= {C1, C2, ……, Ck}
  • 19
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值