聚类算法DBSCAN

DBSCAN:Density-Based Spatial Clustering of Applications with Noise,基于密度和带有噪声点的聚类。
DBSCAN算法与K-MEANS算法一样,没有数学原理上的推导,理解起来比较容易。K-MEANS算法可以处理简单的数据集,对于复杂数据集的分类效果并不好,DBSCAN则可以处理更为复杂的数据集。
1.DBSCAN基本概念
1.核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r邻域内点的数量不小于minPts)。假设r = 10,minPts = 4,如果a点的r范围内的点的数量>=4,则a点可以称之为核心点。
2.直接密度可达:若某点p在q的r邻域内,且q是核心点,则p-q为直接密度可达。
3.密度可达:若有一个点的序列q0、q1…qk,对任意qi - qi-1是直接密度可达的,则称q0 - qk是密度可达。
4.密度相连:若从某核心点出发,点q和k是密度可达的,则称点q和点k是密度相连的。
5.边界点:属于某一个类的非核心点,它的r邻域内点的数量小于minPts。
6.噪音点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的。
下图中,A为核心点,B,C为边界点,N为离群点(噪音点)。
点的分类.png
2.DBSCAN算法的工作流程
先找到第一个核心点A(符合r邻域minPts的要求),然后查找A的r邻域中的其他点是不是核心点,如果是继续向外扩散,直到所有点都无法向外扩散,则这组数据就为同一类。
3.DBSCAN API文档

sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric='euclidean', algorithm='auto', 
leaf_size=30, p=None, random_state=None)

关键参数说明:


eps:浮点型数值,默认为0.5,eps就是我们所说的r邻域(r半径)。
min_samples:整型,默认为5,样本点个数。


4.DBSCAN 算法样例演示

from numpy as np
from sklearn.cluster import DBSCAN

#随机创建一些样本点
X = np.array([[1,6],[2,4],[7,2],[8,5],[9,3],[5,3]])
db = DBSCAN(eps=3,min_samples=5).fit(X)
db.labels_
[0, 0, 1, 1, 1, 1]

#使用db算法对未知数据进行分类
db.fit_predict([[1,4]])
[-1]

5.聚类算法的模型评估
轮廓系数:
轮廓系数.png
代码实现:

from sklearn.metrics import silhouette_score
#labels为分类的结果
score = silhouette_score(X,labels)

下面链接是DBSCAN的可视化过程,可以帮助我们理解KMeans的算法原理。多尝试操作几次,还是非常有趣的,其链接如下:
聚类可视化

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值