python实现基于密度的DBscan 聚类算法(含代码和数据

DBscan算法是典型的基于密度的聚类算法,假定类别可以通过样本分布的紧密程度决定。在DBscan算法中,将样本密集的一个区域内的点作为一个cluster,再将相连的clueter聚合为一个cluster。

  • 把所有的数据点区分并标记为核心点、边界点和噪音点
    删除噪音点
  • 所有在半径Eps内的核心点间由边相连
  • 联通的核心点作为一组成为一个cluster
  • 分配每一个边界点到它所落入的核心点半径范围内的cluster中

若在某点半径Eps内有>=minPts个点,则该点就是核心点,
若点不是核心点,但是被其他核心点包括,则为边界点
若又不是核心点,又没被包括,则为离群点(噪音点
在这里插入图片描述

  1. 距离选择
    DBscan对不同的距离指标总体上效果差异不大,选择欧式距离作为距离指标。
  2. 参数选择
    在DBscan中不需要预先决定cluster的数目,算法自动决定聚类的数目,但是需要设定Eps和MinPts两个参数。在本实验中对扫描半径Eps最小包含点MinPts 的取值如下:
    minPts = [3 4 5 6 7 8 9]
    Eps = [0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29]

dbscan.py

import numpy as np
import data_utils as du

d
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值