DBSCAN算法

DBSCAN算法是基于密度进行聚类的,根基任何画出指定的半径园,是否满足minpts判断是不是核心对象,可以不用事先指定簇,可以分出形状

  1. 核心对象: 若某个点的密度达到算法设定的值视为核心点(即r邻域内点的数量不小于minPts)
  2. E-邻域距离阈值: 设定的半径
  3. 直接密度可达: p在q的r的邻域内(p在以q点设定半径下的圆内,则称p-q直接密度可达)
  4. 密度可达: 若p-q直接密度可达,f-p直接密度可达,f-q直接密度不可达,则称f-q密度可达
    算法原理: 选取一个核心点画圆,在圆内的点满足minpts个数,在这些点依次画圆,重复以上,结束后若没有在圆内的点称为噪声点
    在这里插入图片描述
    二、 代码举例
    db = skc.DBSCAN(eps = ,min_samples = ).fix(x)
    #eps为E-邻域距离阈值(半径长) min_samples为minPts
    #x为[[data1,data2……],[],[],[]……]
    labels = db.labels_
    #返回数据标签(若标签值为-1,则代表该点数据为噪声点)
    lables[:] = -1
    #判断lables截取的长度内每个值是否等于-1,等于返回True,不等于返回False,如lables = [1,5,8,-1,4,-1] 运行lables[1:6] 判断序号1到5内的元素是否为-1并依次返回boolean到序号为组成新的列表,结果为
    [False,False,True,False,True]
    n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
    #统计有几类有效簇(-1要除去因为是噪声点),set函数查重返回无序的无重复的集合,len返回set函数后的集合得到一共分成几个簇
    1 if -1 in labels else 0 表示如果-1在内表示有噪声点不是有效点所以要减去1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值