精华内容
下载资源
问答
  • 一种基于密度峰值聚类的图像分割算法.pdf
  • 面向医学图像分割的蚁群密度峰值聚类.pdf
  • 基于密度峰值快速搜索发现聚类中心的聚类算法源代码。
  • 基于点距离和密度峰值聚类的社区发现方法
  • 针对FSDP聚类算法在计算数据对象的局部密度与最小距离时,由于需要遍历整个数据集而导致算法整体时间复杂度较高的问题,提出了一种基于Spark的并行FSDP聚类算法SFSDP。首先,通过空间网格划分将待聚类数据集划分成多...
  • 自适应密度峰值聚类算法.pdf
  • 基于密度二分法的密度峰值聚类方法.pdf
  • 密度峰值聚类算法(DPC)

    千次阅读 2021-11-22 15:35:19
    通过学习密度峰值聚类算法(DPC),掌握算法的原理及其优缺点,对改进方法的论文进行总结,最后给出了MATLAB代码实现该算法。

    前言

    Rodriguez 等于2014年提出快速搜索和寻找密度峰值的聚类(clustering by fast search and find of density peaks),简称密度峰值聚类(density peaks clustering,DPC)算法。

    一、DPC算法

    1.1 DPC算法的两个假设

    1)类簇中心被类簇中其他密度较低的数据点包围;
    2)类簇中心间的距离相对较远。

    1.2 DPC算法的两个重要概念

    1)局部密度
    设有数据集为 ,其中 ,N为样本个数,M为样本维数。
    对于样本点i的局部密度,局部密度有两种计算方式,离散值采用截断核的计算方式,连续值则用高斯核的计算方式。
    在这里插入图片描述
    式中, d i j d_{ij} dij 为数据点 i i i 与数据点 j j j 的欧氏距离, d c d_{c} dc 为数据点i的邻域截断距离。
    采用截断核计算的局部密度 ρ i ρ_{i} ρi 等于分布在样本点 i i i 的邻域截断距离范围内的样本点个数;而利用高斯计算的局部密度 ρ i ρ_{i} ρi 等于所有样本点到样本点i的高斯距离之和。
    DPC算法的原论文指出,对于较大规模的数据集,截断核的计算方式聚类效果较好;而对于小规模数据集,高斯核的计算方式聚类效果更为明显。
    2)相对距离
    相对距离 δ i δ_{i} δi 指样本点 i i i 与其他密度更高的点之间的最小距离。在计算样本点 i i i 前需要对每个数据点的局部密度进行排序。
    对于密度最高的样本,相对距离定义为:
    δ i = m a x i ≠ j ( d i j ) δ_{i}=\underset{i≠j}{max}(d_{ij}) δi=i=jmax(dij)
    对于其余数据点,相对距离定义为:
    δ i = m i n j : ρ j > ρ i ( d i j ) δ_{i}=\underset{j:ρ_{j}>ρ_{i}}{min}(d_{ij}) δi=j:ρj>ρimin(dij)
    由于密度最高的样本不存在比其密度更高的点,DPC认为该点必为密度峰值(类簇中心),人为设定其相对距离为最大值。剩余的密度峰值需要同时满足两个条件:局部密度 ρ ρ ρ 较高,相对距离 δ δ δ 较大。为此,DPC算法的原论文通过决策值 γ γ γ 寻找这类密度峰值,下式给出了 γ i γ_{i} γi 的定义:
    γ i = ρ i × δ i γ_{i}=ρ_{i}×δ_{i} γi=ρi×δi
    找到密度峰值后,DPC将剩余数据点分配给密度比它高的最近数据点所在类簇,形成多个从密度峰值出发的树状结构,每一个树状结构代表一个类簇。

    1.3 DPC算法的执行步骤

    1)利用样本集数据计算距离矩阵 d i j d_{ij} dij
    2)确定邻域截断距离 d c d_{c} dc
    3)计算局部密度 ρ i ρ_{i} ρi 和相对距离 δ i δ_{i} δi
    4)绘制决策图,选取聚类中心点;
    5)对非聚类中心数据点进行归类,聚类结束。
    最后可以将每个簇中的数据点进一步分为核心点和边缘点两个部分,并检测噪声点。其中,核心点是类簇核心部分,其 ρ ρ ρ 值较大;边缘点位于类簇的边界区域且 ρ ρ ρ 值较小,两者的区分界定则是借助于边界区域的平均局部密度。

    1.4 DPC算法的优缺点

    优点:
    1)不需要事先指定类簇数;
    2)能够发现非球形类簇;
    3)只有一个参数需要预先取值。
    缺点:
    1)当类簇间的数据密集程度差异较大时,DPC算法并不能获得较好的聚类效果;
    2)DPC算法的样本分配策略存在分配连带错误。

    二、改进的DPC算法及其论文

    2.1 局部密度和相对距离的定义

    1. 引入k近邻(KNN)思想计算局部密度。当样本类簇密集程度相差较大时,全局范围内密度较高的点可能均存在于密集类簇中,这将难以发现正确的密度峰值;另外,每个类簇中的密度峰值,它的密度是所在类簇中密度较高的样本,即局部范围内密度较高的样本。因此,样本与其近邻点的相对密度可更加准确地反映该样本是否能成为类簇中心[1]。
    2. 引入共享近邻(SNN)思想计算局部密度和相对距离。前者通过计算两个点之间的共享邻居的数量快速准确地识别和分配肯定属于一个集群的点;后者通过查找更多邻居所属的簇来分配剩余的点。

    2.2 截断距离的调整

    1. 针对截断距离参数的确定问题,构造关于截断距离参数的局部密度信息熵,通过最小化信息熵自适应地确定截断距离参数[3]。
    2. 寻找使基尼系数取得最小值时所对应的截断距离,并且将优化后的截断距离作为下一步聚类的基础,代替人工选取截断距离[4]。
    3. 建立以ACC指标为目标函数的优化问题,利用鲸鱼优化算法对目标函数进行优化,寻找最佳的截断距离[5]。

    2.3 聚类中心的获取方法

    1. 针对聚类中心的确定问题,利用从非聚类中心到聚类中心数据点局部密度和距离的乘积,存在明显跳跃这一特征确定阈值,从而能自动确定聚类中心[3]。
    2. 根据决策图和簇中心权值排序图提出自动选取聚类中心的策略[4]。
    3. 利用加权的局部密度和相对距离乘积的斜率变化趋势实现聚类中心的自动选择[5]。
    4. 基于KL散度的参数指标,用于描述数据集点与其他点γ值的差异度之和,差异度越大,值越趋近于0[6]。

    2.4 制定新的分配规则

    1. 定义新的数据点间邻近程度的度量准则。采用k近邻思想寻找密度峰值,将密度峰值的k个近邻点分配给其对应类簇,对所有已分配数据点寻找相互邻近度最高的未分配数据点,将未分配数据点分配给已分配数据点所在类簇[1]。
    2. 提出两种基于K近邻的样本分配策略,依次分配样本到相应类簇中心[7]。

    2.5 改进距离矩阵

    由于所使用的数据集的量纲存在不统一的问题和数值的数量级对数据分布和类别划分有一定影响,采用马氏距离替代原算法中的欧式距离来消除这种影响[2]。

    三、聚类效果及其MATLAB代码

    通过计算样本的局部密度和相对距离绘制决策图如图1所示。图中分布在右上角的样本具有非常高的 δ δ δ 值和 ρ ρ ρ 值,可以考虑选择这三个样本为密度峰值点,即聚类中心点。
    在这里插入图片描述
    为了更准确的选择密度峰值点作为聚类中心点,可以对决策值 γ γ γ 进行降序排列如图2所示,进而选择前 k k k γ γ γ 值最大的数据点作为聚类中心点。
    在这里插入图片描述
    从图中可以看出,聚类中心点的数目为3,可以通过程序确定 γ γ γ 进行降序排列前的样本点所在下标,继而找到这三个聚类中心点。
    数据集最终的聚类效果如下:
    在这里插入图片描述

    clc;
    clear;
    close all;
    
    load x;
    load Feature;
    x = Feature';
    dc = 0.5;           % 邻域截断距离
    s = 2;              % 选择局部密度的计算方式
    [rho,delta,gamma,cluster] = DPC(x,dc,s);
    
    figure;
    plot(rho,delta,'bo');
    xlabel('\rho','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
    ylabel('\delta','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
    box off;
    
    figure;
    plot(gamma,'r-o');
    xlabel('n','FontAngle','italic','FontName','Times New Roman','FontWeight','normal','FontSize',14);
    ylabel('\gamma','FontAngle','italic','FontName','Times New Roman','FontWeight','bold','FontSize',14);
    box off;
    ShowClusterResult(x, cluster);
    
    

    数据集以及完整代码见链接:密度峰值聚类算法(DPC)MATLAB代码

    参考文献

    [1] 赵嘉, 姚占峰, 吕莉, 等. 基于相互邻近度的密度峰值聚类算法[J]. 控制与决策, 2021, 36(3): 543-552.
    [2] 辜振谱, 刘晓波, 韩子东, 等. 基于改进密度峰值聚类的航空发动机故障诊断[J]. 计算机集成制造系统, 2020, 26(5): 1211-1217.
    [3] 王军华, 李建军, 李俊山, 等. 自适应快速搜索密度峰值聚类算法[J]. 计算机工程与应用, 2019, 55(24): 122-127.
    [4] 吴斌, 卢红丽, 江惠君. 自适应密度峰值聚类算法[J]. 计算机应用, 2020, 40(6): 1654-1661.
    [5] 王芙银, 张德生, 张 晓. 结合鲸鱼优化算法的自适应密度峰值聚类算法[J]. 计算机工程与应用, 2021, 57(3): 94-102.
    [6] 丁志成, 葛洪伟, 周 竞. 基于KL散度的密度峰值聚类算法[J]. 重庆邮电大学学报(自然科学版), 2019, 31(3): 367-374.
    [7] 谢娟英, 高红超, 谢维信. K近邻优化的密度峰值快速搜索聚类算法[J]. 中国科学:信息科学, 2016, 46(2): 258-280.
    [8] LIU R, WANG H, YU X. Shared-nearest-neighbor-based clustering by fast search and find of density peaks[J]. Information Sciences, 2018, 450: 200-226.

    展开全文
  • 基于密度峰值聚类的VRPTW问题研究.pdf
  • 针对簇类中心自适应的密度峰值聚类算法.pdf
  • 一种基于网格划分的密度峰值聚类改进算法.pdf
  • 基于不相似性度量优化的密度峰值聚类算法.pdf
  • 一种基于簇中心点自动选择策略的密度峰值聚类算法.pdf
  • 密度峰值聚类算法是一种新颖的密度聚类算法,但是原算法仅仅考虑了数据的全局结构,在对分布不均匀的数据集进行聚类时效果不理想,并且原算法仅仅依据决策图上各点的分布情况来选取聚类中心,缺乏可靠的选取标准。...
  • 为了解决密度峰值聚类算法(Density Peaks Clustering algorithm,DPC)设置截止距离和选择聚类中心过程中的问题,一种新的自调节步长果蝇优化算法被用于密度峰值聚类的重要参数截止距离的计算,设计了一种自适应...
  • 峰值聚类算法(matlab)

    2021-01-03 23:10:32
    基于密度峰值快速搜索发现聚类中心的聚类算法matlab代码
  • 这是离开公司前做的最后一个算法,之前做的一些算法,由于老大的指点,少走了很多弯路,密度峰值聚类这个是纯粹自己做的,走了很多弯路,在这里和大家分享借鉴一下,共勉!一、简单介绍及原理顾名思义,这是一种基于...

    这是离开公司前做的最后一个算法,之前做的一些算法,由于老大的指点,少走了很多弯路,密度峰值聚类这个是纯粹自己做的,走了很多弯路,在这里和大家分享借鉴一下,共勉!

    一、简单介绍及原理

    顾名思义,这是一种基于密度的聚类算法,以高密度区域作为判断依据,这种非参数的方法,和传统方法比,适用于处理任何形状的数据集,而且无需提前设置簇的数量。

    这里提到一个聚类中心的概念:类簇的中心是由一些局部密度较低的点所围绕,且这些点距离其他高密度的点的距离都比较远,通过计算最近邻的距离,得到聚类中心,并依据密度大小进行排列。

    我在这里借鉴了——马春来,单洪,马涛.一种基于簇中心点自动选择策略的密度峰值聚类算法.计算机科学.2016,43(7)。这个文献中提供了一种自动选择策略的方法,大家有兴趣可以看一下。

    对于一个数据集D={p1,p2,……pn}的点pi,计算每个点的局部密度ρi和相邻密度点的距离di,这里提出一个概念,簇中心权值:γi= ρi * di  。

    通过将簇中心权值降序排列,我们可以通过下降的趋势(斜率)找出拐点所在。

    下图为选择聚类中心的方法

    省略了不少东西,大家可以下载那份文献自己细细研读。

    二、一些遇到的问题及我的心得

    1、有现成的代码固然好,但是别人的代码解决的问题终归和你的问题不一样。不如自己从头到尾撸一遍,结合自己的情况进行修改。

    2、传统的密度峰值聚类需要自己设置参数,稍微加以改进可以扔掉参数,让它自己迭代。

    3、为什么要将密度和距离相乘:这样可以避免某一项的值过小,导致特征不明显

    4、注意归一化的问题,具体情况具体对待。(在归一化这个问题坑了我蛮久)

    5、拐点的确定问题,在算法构建的初始阶段,最好人工重复确认一下,避免盲目自信到后面找不到问题所在。

    6、若某两个或多个聚类点距离较近,将其归为一个同一个聚类中心。

    展开全文
  • 基于密度峰值聚类的流量异常检测方法,曾霄笑,杨杨,在网络中,流量是体现网络状态的一个重要数据,网络流量的异常通常反映出网络中的异常状态。通过对流量进行异常检测,能够及时发
  • 密度峰值聚类介绍与matlab实现

    千次阅读 2021-01-03 23:14:22
    2014年6⽉,Alex Rodriguez和Alessandro Laio在Science上发表了⼀篇名《Clustering by fast search and find of density peaks》的文章,提供了⼀种简洁而优美的聚类算法,是⼀种基于密度聚类方法,可以识别各种...

    1、算法简介:

            2014年6⽉,Alex Rodriguez和Alessandro Laio在Science上发表了⼀篇名《Clustering by fast search and find of density peaks》的文章,提供了⼀种简洁而优美的聚类算法,是⼀种基于密度的聚类方法,可以识别各种形状的类簇,并且参数很容易确定。它克服了DBSCAN中不同类的密度差别大、邻域范围难以设定的问题,鲁棒性强。

    2、算法对于数据集的假设:

            在这个算法中对数据集有两条假设:

                    1.数据集在空间分布并不均匀,数据中局部高密度点被一些局部低密度点包围

                    2.数据集中局部高密度点之间的相对距离较大

    3、算法相关公式:

            1)密度计算:  \rho_i=\sum_{j}\chi (d_{ij}-d_c)其中,密度计算有两种计算方式:1.传统的欧式距离计算距离,将距离小于点的数量直接作为密度,2.计算欧式距离并计算高斯函数值,将所有点值的和作为密度。

     2)局部高密度点距离计算:,当dij是密度最高的点时:

    4、算法过程

    1)计算数据密度

    根据设定的截断距离d_c,计算每个数据点的局部密度\rho_i

    2)局部高密度点距离

    计算每个点到高于自身局部密度值点的最小距离。得到\delta_i

    3)根据密度与距离估计中心点

    对每⼀个点,绘制出局部密度\rho_i与高局部密度点距离\delta_i的散点图

    可以看出上图中的大部分数据都具有较小的距离,但是有一些数据有着较大的距离与密度,这样的点我们选择为聚类中心点。同时将有着较高距离较低密度的点确定为异常点

    4)划分剩余数据点(聚类过程)

    把每个数据点归类到比他们的密度更大的最相近的类中心所属的类别中。

    代码实现:

    1)密度计算

    %% 密度计算函数
    function data_density=cal_density(data,cut_dist)
        data_len=size(data,1);
        data_density=zeros(1,data_len);
        for idata_len=1:data_len
            temp_dist=pdist2(data,data(idata_len,:));
            data_density(idata_len)=sum(exp(-(temp_dist./cut_dist).^2));
        end
    end

    2)距离计算

    %% 计算delta
    function data_delta=cal_delta(data,data_density)
        data_len=size(data,1);
        data_delta=zeros(1,data_len);
        for idata_len=1:data_len
            index=data_density>data_density(idata_len);
            if sum(index)~=0
                data_delta(idata_len)=min(pdist2(data(idata_len,:),data(index,:)));
            else
                data_delta(idata_len)=max(pdist2(data(idata_len,:),data));
            end
        end
    end

    3)聚类中心点寻找

    %% 寻找聚类中心点
    function [center,center_index]=find_center(data,data_delta,data_density,cut_dist)
        R=data_density.*data_delta;
        [sort_R,R_index]=sort(R,"descend");
        gama=abs(sort_R(1:end-1)-sort_R(2:end));
        [sort_gama,gama_idnex]=sort(gama,"descend");
        gmeans=mean(sort_gama(2:end));
        %寻找疑似聚类中心点
        temp_center=data(R_index(gama>gmeans),:);
        temp_center_index=R_index(gama>gmeans);
        %进一步筛选中心点
        temp_center_dist=pdist2(temp_center,temp_center);
        temp_center_len=size(temp_center,1);
        center=[];
        center_index=[];
        %判断中心点之间距离是否小于2倍截断距离并中心点去重
        for icenter_len=1:temp_center_len
            temp_index=find(temp_center_dist(icenter_len,:)<2*cut_dist);
            [~,max_density_index]=max(data_density(temp_center_index(temp_index)));
            if sum(center_index==temp_center_index(temp_index(max_density_index)))==0
                center=[center;temp_center(temp_index(max_density_index),:)];
                center_index=[center_index,temp_center_index(temp_index(max_density_index))];
            end
            % center(icenter_len,:)=temp_center(temp_index(max_density_index),:);
        end
    end

    4)聚类过程

    %% 聚类算法
    function cluster=Clustering(data,center,center_index,data_density)
        data_len=size(data,1);
        data_dist=pdist2(data,data);
        cluster=zeros(1,data_len);
        % 标记中心点序号
        for i=1:size(center_index,2)
            cluster(center_index(i))=i;
        end
        % 对数据密度进行降序排序
        [sort_density,sort_index]=sort(data_density,"descend");
        for idata_len=1:data_len
            %判断当前数据点是否被分类
            if cluster(sort_index(idata_len))==0
                near=sort_index(idata_len);
                while 1
                    near_density=find(data_density>data_density(near));
                    near_dist=data_dist(near,near_density);
                    [~,min_index]=min(near_dist);
                    if cluster(near_density(min_index))
                        cluster(sort_index(idata_len))=cluster(near_density(min_index));
                        break;
                    else
                        near=near_density(min_index);
                    end
                end
            end
        end
    end

    完整代码:峰值聚类算法(matlab)_matlab密度峰值聚类算法-机器学习文档类资源-CSDN下载

    展开全文
  • 密度峰值聚类算法总结及其python实现先上代码:#-*-coding:utf-8 -*-from __future__ import divisionimport numpy as npfrom sklearn import preprocessingfrom scipy.special import combfrom sklearn.metrics ...

    密度峰值聚类算法总结及其python实现

    先上代码:

    #-*-coding:utf-8 -*-

    from __future__ import division

    import numpy as np

    from sklearn import preprocessing

    from scipy.special import comb

    from sklearn.metrics import adjusted_rand_score,f1_score,accuracy_score,precision_score,precision_recall_fscore_support

    from sklearn.datasets import *

    import sys

    import matplotlib.pyplot as plt

    import matplotlib.colors as colors

    import csv

    import random

    from time import time

    from matplotlib.font_manager import FontProperties

    defaultencoding = 'utf-8'

    font = FontProperties(fname='/Library/Fonts/Songti.ttc')

    if sys.getdefaultencoding() != defaultencoding:

    reload(sys)

    sys.setdefaultencoding(defaultencoding)

    def calculate(data,percent):

    #计算距离

    distlist = []

    dist = np.zeros((len(data), len(data)));

    for i in range(len(data)-1):

    for j in range(i+1,len(data)):

    distance = np.sqrt(np.sum(np.square(data[i] - data[j])))

    dist[i, j] = distance

    dist[j, i] = distance

    if(i != j):

    distlist.append(distance)

    # dc

    # for i in range(len(dist) - 1):

    # for j in range(len(dist) - 1):

    # if(dist[i,j] != 0):

    sortdist = sorted(distlist)

    position = round(len(distlist) * percent / 100)

    dc = sortdist[position]

    print('dc',dc)

    #计算局部密度

    # 计算局部密度 rho (利用 Gaussian 核)

    rho = np.zeros(len(dist))

    # Gaussian kernel

    for i in range(len(dist) - 1):

    for j in range(i + 1, len(dist)):

    rho[i] = rho[i] + np.exp(-(dist[i, j] / dc) * (dist[i, j] / dc))

    rho[j] = rho[j] + np.exp(-(dist[i, j] / dc) * (dist[i, j] / dc))

    rho = [item / max(rho) for item in rho]

    # 生成 delta 和 nneigh 数组

    # delta 距离数组

    # nneigh 比本身密度大的最近的点

    # 记录 rho 值更大的数据点中与 ordrho(ii) 距离最近的点的编号 ordrho(jj)

    # 将 rho 按降序排列,ordrho 保持序

    ordrho = np.flipud(np.argsort(rho))

    delta = np.zeros(len(dist))

    nneigh = np.zeros(len(dist),dtype=int)

    delta[ordrho[0]] = -1.

    nneigh[ordrho[0]] = 0

    # 求最大距离

    maxd = max(dist.flatten())

    for ii in range(1,len(dist)):

    delta[ordrho[ii]] = maxd

    for jj in range(ii):

    if dist[ordrho[ii], ordrho[jj]] < delta[ordrho[ii]]:

    delta[ordrho[ii]] = dist[ordrho[ii], ordrho[jj]]

    nneigh[ordrho[ii]] = ordrho[jj]

    delta[ordrho[0]] = max(delta)

    # delta = [item/max(delta) for item in delta]

    gamma = [rho[i] * delta[i] for i in range(len(dist))]

    plt.figure(1);

    for index in range(len(dist)):

    plt.plot(rho[index], delta[index], 'ko');

    pos = plt.ginput(1)

    rhomin = pos[0][0]

    deltamin = pos[0][1]

    cl = -1*np.ones(len(dist),dtype=int)

    icl = []

    NCLUST = 1

    for i in range(len(dist)):

    if rho[i]>rhomin and delta[i]>deltamin:

    cl[i] = NCLUST #第 i 号数据点属于第 NCLUST 个 cluster

    icl.append(i) # 逆映射,第 NCLUST 个 cluster 的中心为第 i 号数据点

    NCLUST+=1

    for i in range(len(dist)):

    if cl[ordrho[i]] == -1:

    cl[ordrho[i]] = cl[nneigh[ordrho[i]]]

    print(cl)

    color = ['bo', 'co', 'go', 'ko', 'mo', 'ro', 'wo', 'yo']

    s = random.sample(color, NCLUST-1)

    plt.close()

    for i in range(len(data)):

    plt.plot(data[i][0],data[i][1],s[cl[i]-1])

    plt.show();

    def loadData():

    dataSet = []

    # fileIn = open('C:/data/jain.txt')

    fileIn = open('C:/data/jain.dat')

    for line in fileIn.readlines():

    lineArr = line.strip().split('\t')

    dataSet.append([float(lineArr[0]), float(lineArr[1])])

    data = np.array(dataSet);

    return data;

    #data,label = load_breast_cancer(True)

    #min_max_scaler = preprocessing.MinMaxScaler()

    #data = min_max_scaler.fit_transform(data)

    def test():

    data = loadData()

    dataSet = np.array(data);

    dist = calculate(dataSet,2)

    # local_density(dist,2)

    if __name__ == '__main__': test();

    # len = len(data)

    # # start = time()

    # fsdp = FSDP(len,7.8605,data)

    # fsdp.clustering(0.4703,0.7108)

    # print (time() - start)/60.0

    # print fsdp.cl

    # print label

    # print "f1_score"

    # print f1_score(fsdp.cl,label,average="weighted")

    # print "accary"

    # print accuracy_score(fsdp.cl,label)

    # print adjusted_rand_score(fsdp.cl,label)

    # gamma = np.flipud(np.sort(fsdp.gamma))

    # plt.figure("标准CS")

    # plt.subplot(311)

    # x = [t for t in range(0, len(gamma))]

    # plt.plot(x, gamma, 'r*')

    # plt.subplot(312)

    # plt.plot(fsdp.rho, fsdp.delta, 'r*')

    # plt.legend(loc='upper right', prop=font)

    #

    # plt.subplot(313)

    # color = []

    # for i in fsdp.cl:

    # color.append(colors.cnames.values()[i])

    # plt.scatter(data[:,0], data[:,1],marker=".",c=color)

    # plt.legend(loc='upper right', prop=font)

    # plt.show()

    展开全文
  • 针对密度峰值聚类算法CFSFDP(clustering by fast search and find of density peaks)计算密度时人为判断截断距离和人工截取簇类中心的缺陷,提出了一种基于非参数核密度估计的密度峰值聚类算法。首先,应用非参数...
  • 密度峰值聚类 密度峰值聚类算法是一种不需要迭代的,可以一次性找到聚类中心的聚类方法。 基本思想: (1)聚类中心的密度应当比较大 (2)聚类中心应当离比其密度更大的点较远 基于这两个条件就可以确定聚类中心点了。 ...
  • 快速搜索和寻找密度峰值的聚类(clustering by fast search and find of density peaks),简称密度峰值聚类(density peaks clustering,DPC)算法,该算法的优点为:不需要事先指定类簇数;能够发现非球形类簇;只有一...
  • 密度峰值聚类算法MATLAB程序数据见:MATLAB中“fitgmdist”的用法及其GMM聚类算法,保存为gauss_data.txt文件,数据最后一列是类标签。1. MATLAB程序clear allclose alldata_load=dlmread('gauss_data.txt');[num,...
  • 针对这一问题,提出了基于密度比例峰值聚类算法即R-CFSFDP。该算法将密度比例引入到CFSFDP中,通过计算样本数据的密度比峰值来提高数据中密度较小类簇的辨识度,进而提升整体聚类的准确率。基于9个常用测试数据集(2...
  • 原始dc是数据总量的1%-2%,那么归一化之后该值该如何取</p>
  • 快速搜索密度峰值聚类实现代码
  • 现有基础矩阵鲁棒估计方法存在精度不高、准确性较低等不足,基于此,提出一种利用多核学习改进密度峰值聚类的基础矩阵估计方法。首先,针对密度峰值算法需要选取参数和无法自动聚类等不足,引入多核学习和γ分布图进行...
  • 论文不错,值得学习。 特别是基于块的不相似性度量,里面有点内容。 据说作者没有公开代码。。。怎么可以酱紫~ 撸一把?待续。。。。 import numpy as np class DDPC(): def __init__(): ......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,053
精华内容 421
关键字:

密度峰值聚类

友情链接: VISA_USB.rar