amengduo

简单易学的机器学习算法—基于密度的聚类算法DBSCAN

一、基于密度的聚类算法的概述

    我想了解下基于密度的聚类算法,熟悉下基于密度的聚类算法与基于距离的聚类算法,如K-Means算法之间的区别。
    基于密度的聚类算法主要的目标是寻找被低密度区域分离的高密度区域。与基于距离的聚类算法不同的是,基于距离的聚类算法的聚类结果是球状的簇,而基于密度的聚类算法可以发现任意形状的聚类,这对于带有噪音点的数据起着重要的作用。
二、DBSCAN算法的原理
1、基本概念
    DBSCAN(Density-Based Spatial Clustering of Application with Noise)是一种典型的基于密度的聚类算法,在DBSCAN算法中将数据点分为一下三类:
核心点。在半径Eps内含有超过MinPts数目的点
边界点。在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内
噪音点。既不是核心点也不是边界点的点
在这里有两个量,一个是半径Eps,另一个是指定的数目MinPts。
    一些其他的概念
Eps邻域。简单来讲就是与点p的距离小于等于Eps的所有的点的集合,可以表示为
直接密度可达。如果p在核心对象q的Eps邻域内,则称对象p从对象q出发是直接密度可达的。
密度可达。对于对象链:是从关于Eps和MinPts直接密度可达的,则对象是从对象关于Eps和MinPts密度可达的。
2、算法流程

(流程)
三、实验仿真
    在实验中使用了两个测试数据集,数据集的原始图像如下:

(数据集1)

(数据集2)
数据集1相对比较简单。显然我们可以发现数据集1共有两个类,数据集2有四个类,下面我们通过DBSCAN算法实现数据点的聚类:

MATLAB代码
主程序


[plain] view plain copy 在CODE上查看代码片派生到我的代码片
%% DBSCAN  
clear all;  
clc;  
 
%% 导入数据集  
% data = load(\'testData.txt\');  
data = load(\'testData_2.txt\');  
 
% 定义参数Eps和MinPts  
MinPts = 5;  
Eps = epsilon(data, MinPts);  
 
[m,n] = size(data);%得到数据的大小  
 
x = [(1:m)\' data];  
[m,n] = size(x);%重新计算数据集的大小  
types = zeros(1,m);%用于区分核心点1,边界点0和噪音点-1  
dealed = zeros(m,1);%用于判断该点是否处理过,0表示未处理过  
dis = calDistance(x(:,2:n));  
number = 1;%用于标记类  
 
%% 对每一个点进行处理  
for i = 1:m  
    %找到未处理的点  
    if dealed(i) == 0  
        xTemp = x(i,:);  
        D = dis(i,:);%取得第i个点到其他所有点的距离  
        ind = find(D<=Eps);%找到半径Eps内的所有点  
          
        %% 区分点的类型  
          
        %边界点  
        if length(ind) > 1 && length(ind) < MinPts 1  
            types(i) = 0;  
            class(i) = 0;  
        end  
        %噪音点  
        if length(ind) == 1  
            types(i) = -1;  
            class(i) = -1;  
            dealed(i) = 1;  
        end  
        %核心点(此处是关键步骤)  
        if length(ind) >= MinPts 1  
            types(xTemp(1,1)) = 1;  
            class(ind) = number;  
      

分类:

技术点:

相关文章:

  • 2021-09-23
  • 2021-10-19
  • 2021-12-12
  • 2021-04-24
  • 2021-08-26
  • 2021-04-03
  • 2021-05-23
  • 2021-09-07
猜你喜欢
  • 2021-12-12
  • 2021-11-22
  • 2021-12-18
  • 2021-10-19
  • 2021-12-02
  • 2021-12-12
相关资源
相似解决方案