【数学建模】--聚类模型

这篇具有很好参考价值的文章主要介绍了【数学建模】--聚类模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

聚类模型的定义:

“物以类聚,人以群分”,所谓的聚类,就是将样本划分为由类似的对象组成的多个类的过程。聚类后,我们可以更加准确的在每个类中单独使用统计模型进行估计,分析或预测;也可以探究不同类之间的相关性和主要差异。

聚类和分类的区别:分类是已知类别的,聚类未知。

 K-means聚类算法

流程:

  1. 指定划分的簇的k值(类的个数)
  2. 随机选择k个数据作为哦初始聚类中心(不一定是样本点)
  3. 将其余数据划分到距离较近的聚类中心
  4. 调整新类,将中心更新为已划分数据的中心
  5. 重复3,4步检查中心是否收敛(不变),如果收敛或达到迭代次数使停止循环。(一般循迭代次数设置为10次)
  6. 结束。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

图形结合理解:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

我们可以登录网站自行体验:Visualizing K-Means Clustering

如果使自己添加类的位置可以选择I‘ll Choose【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

选择自己喜欢的图形:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

选择图形后添加类的位置然后一直点GO/Update Centroids直至不想不再发生变化。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

算法流程图:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

K_means算法的评价:

优点:快,高效率

缺点:需要给出k;对聚类中心敏感,聚类中心的位置不同结果不同;对孤立点敏感,孤立点对中心和其余样本带点的更新影响较大。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

K-means算法—Spss操作:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

聚类数根据自己想要分类的层次决定。

这里我们分为了高消费,中消费,低消费三类【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

得出结果

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

K-means算法的讨论:

需要自己给定k,当变量量纲不同的时候需要去量纲化。

Spss中去量纲化操作:

分析->描述统计->描述->导入需要去量纲化变量->√将标准化值另存为变量。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘 

 

得到去量纲话Z-name【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

因为本次的例子变量单位相同不需要去量纲化,为了方便就拿此例子的数据去量纲化得到的结果有些轻微差【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

系统(层次)模型

简介:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

过程及原理简介:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

样品与样品之间的常用距离:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

指标与指标之间的常用距离:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

类与类之间的常用距离以及计算方法:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

案例:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

得到聚类的谱系图:

 

我们想要将数据分成几类通过对谱系图作垂线可得到明显的类组如在G9后面的线作垂线得到G1,2,4,5,6,7,8为一组,G3为一组一共两组。

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

注意问题:

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

系统聚类在SPSS中的操作:

分析-分类-系统聚类-导入数据-图-√谱系图

由冰柱图聚类谱系图等。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

如何确定类的个数:利用Excel中的折线图,在折线趋缓的时候找对应的横坐标即是合适的分类个数。

操作:

1.复制stata中得到的系数-excel-排序-降序

2.插入-推荐的图标-散点图-调整合适的x轴坐标范围

3.观察下降趋势趋缓的地方对应的x可作为分类的个数。

STATA                       EXCEL                                                    

 

    【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘        【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

确定K后保存聚类结果并画图

  1. 通过excel的三点分析确定k

分析-分类-系统聚类-保存-单个解-聚类数

  1. 作图:

图形-图标构建-散点图/点图-2个指标(第二个)上拖,3个指标(第四个)上拖-输入x轴,y轴-设置颜色(聚类)-组-点id标签(将省份拖入)-修改图的背景,散点等颜色(双击编辑)

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

图二是三维的【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

编辑界面:

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

DBSCAN算法

基本概念:

可以理解为流感,按一定的半径不断蔓延传播。

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

DBSCAN的优缺点:

 

指标只有很少比如只有两个的时候较为合适,DSCAN的制图对半径,和圆内所能容纳最大聚类个数非常敏感,稍微修改就有很大的显著差异。【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

DBSACN的制图网站:Visualizing DBSCAN Clustering (naftaliharris.com)

演示:

半径为1.2,最少容纳点为4:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

半径为0.8,最少容纳点为4:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

DBSACN的伪代码:【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

Matlab中的DBSACN代码:

IDX中的数据就是每个数据的分类,为0则是孤立点。

旁边则是DBSACN用matlab画出的图形。

【数学建模】--聚类模型,数学建模,数学建模,matlab,聚类,算法,数据挖掘

 

Matlab代码:

主函数:

clc;
clear;
close all;

%% Load Data

load mydata;%这里的数据跟随自己需要聚类的数据可以改变,后面的X是博主调试时使用的数据名可以自己改变。


%% Run DBSCAN Clustering Algorithm

epsilon=0.5;
MinPts=10;
IDX=DBSCAN(X,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
                % X(i,:) is NOISE
                isnoise(i)=true;
            else
                C=C+1;
                ExpandCluster(i,Neighbors,C);
            end
            
        end
    
    end
    
    function ExpandCluster(i,Neighbors,C)
        IDX(i)=C;
        
        k = 1;
        while true
            j = Neighbors(k);
            
            if ~visited(j)
                visited(j)=true;
                Neighbors2=RegionQuery(j);
                if numel(Neighbors2)>=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



 DBSCAN制图函数:文章来源地址https://www.toymoban.com/news/detail-642893.html

function PlotClusterinResult(X, IDX)

    k=max(IDX);

    Colors=hsv(k);

    Legends = {};
    for i=0:k
        Xi=X(IDX==i,:);
        if i~=0
            Style = 'x';
            MarkerSize = 8;
            Color = Colors(i,:);
            Legends{end+1} = ['Cluster #' num2str(i)];
        else
            Style = 'o';
            MarkerSize = 6;
            Color = [0 0 0];
            if ~isempty(Xi)
                Legends{end+1} = 'Noise';
            end
        end
        if ~isempty(Xi)
            plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
        end
        hold on;
    end
    hold off;
    axis equal;
    grid on;
    legend(Legends);
    legend('Location', 'NorthEastOutside');

end

到了这里,关于【数学建模】--聚类模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数学建模美赛 | 国赛必学模型算法精讲】层次分析法——模型原理及Matlab+Python双语言代码演示

    层次分析法 是 评价决策类 中一个比较常用的方法,很多留意美赛赛题的小伙伴们就会发现,在美赛EF类题目的历年O奖论文中,层次分析法出现的概率是非常高的。层次分析法呢一般是针对评价决策类的题目,让我们评价或选择一个可能更好、更优的政策及方案,那这样呢,

    2024年01月25日
    浏览(32)
  • 数学建模-插值算法(Matlab)

    注意:代码文件仅供参考,一定不要直接用于自己的数模论文中 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭 如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231   //清风数学建模 简单来说是根据已知点进行线性数据预测,但数据太少需要通过数学方

    2023年04月26日
    浏览(40)
  • 【数学建模】 MATLAB 蚁群算法

    MATLAB–基于蚁群算法的机器人最短路径规划 * https://blog.csdn.net/woai210shiyanshi/article/details/104712540?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168853912916800215023827%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257Drequest_id=168853912916800215023827biz_id=0utm_medium=distribute.pc_search_result.

    2024年02月15日
    浏览(34)
  • 数学建模之灰色预测模型代码(matlab版)

    灰色关联分析步骤 【1】确定比较对象(评价对象)(就是数据,并且需要进行规范化处理,就是标准化处理,见下面例题的表格数据)和参考数列(评价标准,一般该列数列都是1,就是最优的的情况) 【2】确定各个指标权重,可用层次分析确定 【3】计算灰色关联系数 【4】

    2024年02月09日
    浏览(32)
  • 数学建模之TOPSIS模型(含matlab代码)

      目录 一、方法和原理 1、理想解法  2、方法原理  二、TOPSIS法的具体算法 (1) 用向量规划化的方法求得规范决策矩阵 1、线性变换 2、0-1变换 3、区间型属性的变换 4、向量规范化 5、标准换处理  (2)构成加权规范阵C  (3)确定正理想解和负理想解  (4)计算各方案到正

    2024年02月07日
    浏览(28)
  • 【数学建模】《实战数学建模:例题与讲解》第十四讲-模拟退火、遗传算法(含Matlab代码)

    本系列侧重于例题实战与讲解,希望能够在例题中理解相应技巧。文章开头相关基础知识只是进行简单回顾,读者可以搭配课本或其他博客了解相应章节,然后进入本文正文例题实战,效果更佳。 如果这篇文章对你有帮助,欢迎点赞与收藏~ 现代优化算法,自20世纪80年代初开

    2024年02月04日
    浏览(42)
  • 2023年数学建模:种群竞争模型及其MATLAB实现

    目录 种群竞争模型 MATLAB实现 实战案例:两种昆虫的竞争

    2024年02月11日
    浏览(26)
  • Matlab数学建模算法之模拟退火算法(SA)详解

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 🔐####  防伪水印——左手の明天 #### 🔐 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天分享 matlab数学建模算法 —— 模拟退火算法 💗

    2024年01月16日
    浏览(31)
  • 遗传算法模型--数学建模

    遗传算法是一种模仿自然选择和遗传机制的优化算法,主要用于求解最优化问题。它模拟了生物进化过程中的遗传、交叉和变异过程,通过不断地进化优秀的个体,逐渐搜索到全局最优解。 在开始之前,我们先来了解下遗传算法中的几个概念。 在遗传算法中,我们首先需要

    2024年02月16日
    浏览(30)
  • 数学建模算法汇总(全网最全,含matlab案例代码)

      全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法 数值分析方法 图论算法 线性规划 整数规划 动态规划 贪心算法 分支定界法 蒙特卡洛方法 随机游走算法 遗传算法 粒子群算法 神经网络算法 人工智能算法 模糊数学 时间序列分析 马尔可夫链 决策树 支

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包