zoukankan      html  css  js  c++  java
  • DBSCAN密度聚类

    DBSCAN密度聚类

    基本原理

    DBSCAN是具有噪声的基于密度聚类的方法,可应用于凸样本集,也可应用于非凸样本集。同一类别的样本是紧密相连的。

    DBSCAN密度定义

    假设样本集(D=(x_1,x_2,...,x_m)),参数((epsilon,MinPts))用来描述邻域的样本分布紧密程度,其中(epsilon)描述了某一些样本的领域距离阈值,MinPts描述了某一样本距离的距离为(epsilon)的领域中样本个数的阈值。

    1. (epsilon)邻域,对于(x_jin D),基(epsilon)领域包含样本集D与(x_j)的距离不大于(epsilon)的子样本集,即(N_{epsilon}(x_j)={x_iin D|distance(x_i,x_j)leepsilon}),这个子样本集的个数记为(|N_{epsilon}(x_j)|)
    2. 核心对象:对于任一样本(x_jin D),如果基(epsilon)领域对应的(N_{epsilon}(x_j))至少包含MinPts个样本,即如果(|N_{epsilon}(x_j)|ge MinPts),则(x_j)是核心对象。
    3. 密度直达:如果(x_i)位于(x_j)(epsilon)领域中,且(x_j)是核心对象,则称(x_i)(x_j)密度直达。反之不一定成立,要考虑(x_i)是否为核心对象。
    4. 密度可达:对于(x_i)(x_j)如果存在样本序列(p_1,p_2,...,p_t)满足(p_1=x_i,p_t=x_j)(p_{t+1})(p_t)密度直达,则称(x_j)(x_i)密度可达。密度可达满足传递性,此时,序列中的传递样本(p_1,p_2,...,p_t)均为核心对象,因为只有核心对象才能使其他样本密度直达。注意密度可达也没满足对称性,这个可由密度直达的不对称性得出。
    5. 密度相连:对于(x_i)(x_j)如果存在核心对象样本(x_k),使(x_i)(x_j)均由(x_k)密度可达,则称(x_i)(x_j)密度相连。

    DBSCAN小结

    主要优点:

    1. 可以对任意形状的数据进行聚类
    2. 可以发现异常点,同时对异常点不敏感
    3. 聚类结果没有偏倚的

    主要缺点:

    1. 如果样本集密度不均匀、聚类间距差距很大时,聚类质量较差,不宜用DBSCAN
    2. 如样本集较大,收敛时间较长
    3. 算法复杂,主要需要对(epsilon)和MinPts联合调参。

    sklearn DBSCAN使用

    类库

    from sklearn.cluster import DBSCAN
    

    参数

    1. eps:(epsilon)领域值
    2. min_samples:领域样本数阈值
    3. metirc:距离度量方式
    4. algorithm:推广优化算法
    5. leaf_size:最近邻搜索算法参数,为使用KD树或球树时使用
    6. p:最近邻距离度量参数

    实例

    import matplotlib.pyplot as plt
    from sklearn.cluster import DBSCAN
    
    y_pred = DBSCAN(n_clusters=3, random_state=9).fit_predict(x)
    plt.scatter(x[:, 0], x[:, 1], c=y_pred)
    plt.show()
    
  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/guesswhy/p/12882567.html
Copyright © 2011-2022 走看看