• 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()
    
  • 相关阅读:
    docker 命令(我使用过的)
    docker 概述
    RabbitMq 概述
    spring cloud gateway
    redis-集群(codis和Cluster)
    jdbc 简单示例和优缺点
    git
    Mycat--概述
    线程池
    同步容器和并发容器
  • 原文地址:https://www.cnblogs.com/guesswhy/p/12882567.html
Copyright © 2020-2023  润新知