数学建模学习笔记(清风)——聚类模型

目录

基础部分:

适用范围:

聚类算法的分类:

步骤 :

        选择聚类算法优先级:

        DBSCAN算法的步骤:

        系统聚类步骤:

        K-mean聚类步骤:

注意事项

Spss实现系统聚类和K-mean聚类、matlab实现DBSCAN聚类:

系统聚类:

K-mean聚类:

KBSCAN聚类matlab算法:

基础部分:

适用范围:

        已知数据,但分类未知

聚类算法的分类:

        1、K-mean聚类算法;

        2、系统聚类;

        3、DBSCAN算法;

步骤 :

        选择聚类算法优先级:

                1、观察数据是否为二维数据,是否有特殊的图形,以确定是否使用DBSCAN算法

                2、如果是多维数据,优先选择系统聚类

                3、无需过多解释,可以使用K-mean聚类算法

        DBSCAN算法的步骤:

        1、确定MinPts和Eps两个参数;

        2、随机选择一个样本点,然后以样本点为原点,以Eps为半径画圆,分别以包含的样本点为圆心,以Eps为半径画圆,直至最后所画的圆不包含任一样本点,得到第一个分类,然后循环这一过程以确定不同的分类;

        系统聚类步骤:

                1、首先假设每个样本点为一个类(或簇)

                2、然后将有着最近距离的两个类归为一类;

                3、循环上述过程直至将所有类别归至一类

        K-mean聚类步骤:

                1、给定聚类数k和聚类中心

                2、确定样本点所属类别

                3、调整各聚类中心,直到其对应的样本点离其距离之和最小,然后再确定样本点的分类

                4、循环上述操作,直至聚类中心不再移动

注意事项;

        1、数据量纲不同时,要先将个数据标准化,

        2、最后要将标准化的数据进行复原,就是标准化的逆过程

Spss实现系统聚类和K-mean聚类、matlab实现DBSCAN聚类:

系统聚类:

数学建模学习笔记(清风)——聚类模型_第1张图片

数学建模学习笔记(清风)——聚类模型_第2张图片

数学建模学习笔记(清风)——聚类模型_第3张图片

数学建模学习笔记(清风)——聚类模型_第4张图片

K-mean聚类:

数学建模学习笔记(清风)——聚类模型_第5张图片

数学建模学习笔记(清风)——聚类模型_第6张图片

数学建模学习笔记(清风)——聚类模型_第7张图片

数学建模学习笔记(清风)——聚类模型_第8张图片

KBSCAN聚类matlab算法:

%主函数:

clc;

clear;

close all;

%% Load Data

load mydata;



%% Run DBSCAN Clustering Algorithm

syms A ;   %接着给A导入数据

epsilon=0.5;

MinPts=10;

IDX=DBSCAN(A,epsilon,MinPts);



%% Plot Results

% 如果只有两个变量,使用以下两行代码画出特有图形

% PlotClusterinResult(X, IDX);

% title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);



%DBSCAN函数代码:

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)

    C=0;

    n=size(X,1);

    IDX=zeros(n,1);  % 初始化全部为0,即全部为噪音点

    D=pdist2(X,X);

    visited=false(n,1);

    isnoise=false(n,1);

    for i=1:n

        if ~visited(i)

            visited(i)=true;

            Neighbors=RegionQuery(i);

            if numel(Neighbors)=MinPts

                    Neighbors=[Neighbors Neighbors2];   %#ok

                end

            end

            if IDX(j)==0

                IDX(j)=C;

            end

            k = k + 1;

            if k > numel(Neighbors)

                break;

            end

        end

    end

    function Neighbors=RegionQuery(i)

        Neighbors=find(D(i,:)<=epsilon);

    end

end

你可能感兴趣的:(数学建模,聚类,matlab,算法)