当前位置:   article > 正文

聚类算法DBSCAN_dbscan 边

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)
  • 1
  • 2

关键参数说明:


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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/519954
推荐阅读
  

闽ICP备14008679号