• 大小: 2KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-18
  • 语言: Matlab
  • 标签: MATLAB  DBSCAN  

资源简介

密度聚类中的DBSCAN代码,根据周志华的《机器学习》中的伪代码编写,直接调用就可以使用,内部有注释

资源截图

代码片段和文件信息

function [kC] = DBSCAN(epsMinPtsD)
% k 聚类个数
% C 聚类得到的簇
%D 数据集
%eps  邻域参数
%MinPts  领域参数

%设置参数

O = zeros(1 size(D 1));              %核心对象集
C = cell(size(D1));                   %聚类簇
%% 找出核心对象
d = zeros(size(D 1) size(D 1)); 
distance = ‘euclidean‘;
for i = 1:size(D 1)
     for j = size(D 1):-1:i
        if pdist(D([i j]:)distance) <= eps   %计算样本行与行之间的距离,样本之间的距离小于eps元素值为1,反之0
            d(i j) = 1;
        end
        d(j i) = d(i j);   %d为对称矩阵
    end
    %d(ii) = 0;
    if sum(d(:i)) >= MinPts
            O(i) = i;        %找到核心对象
    end
end
% O(O==0) = [];  %O中的元素去零
% disp(O)
%% 找出由密度可达样本生成的聚类簇
k =  0;                                %初始化聚类簇数
Tau = 1:size(D 1);                    %初始化未访问样本集合
while sum(O) ~= 0
    Tau_old = Tau;                     %记录当前未访问样本集合

    %随机选取一个核心对象j
    j = 1;
    while O(j) == 0
        j = j+1;
    end

    Q = zeros(1 size(

评论

共有 条评论