傻瓜攻略(十五)——MATLAB中简单的聚类分析方法

本文是对聚类分析较为简单的介绍,笔者自从大二开始接触数学建模,就使用过Q型聚类和R型聚类,但是一直到研一结束,都没有一个具体的认识,浅尝辄止,不敢言通。最近参加研究生数学建模比赛,又用到了R型聚类方法,才算是有了一丝了解。作为非计算机专业的学生,深感各种算法浩如烟海,想要全部掌握,非人力所能及。最近初入博士生涯,也渐觉面面俱到很难实现,术业有专攻比较现实。本文整理聚类分析方法的皮毛,作为一个小小的总结,以待后续的学习。

本文基本内容来源于司守奎《数学建模算法与应用》(第2版)和matlab官方网页,在其基础上进行个人的理解和改进。

聚类分析介绍 Cluster analysis

聚类分析是一种无监督的分类方法,即不预先指定类别。根据分类对象不同,聚类分析可以分为样本聚类(Q型)和变量聚类(R型)。样本聚类是针对观测样本进行分类,而变量聚类则是试图找出彼此独立且有代表性的自变量,而又不丢失大部分信息,变量聚类是一种降维的方法。

聚类分析方法在大数据的挖掘处理过程中起着重要的作用。目前主流的聚类分析方法有系统聚类法,快速聚类法,两步聚类法。这些聚类方法的特点和适用范围如下(不算全面):
(1)系统聚类法(分层聚类法)
基本思想:开始将每个样本自成一类;然后求两两之间的距离,将距离最近的两类合成一类;如此重复,直到所有样本都合为一类为止。
适用范围:既适用于样本聚类,也适用于变量聚类。并且距离分类准则和距离计算方法都有多种,可以依据具体情形选择。
(2)快速聚类法(K-均值聚类法)
基本思想:按照指定分类数目,选择个初始聚类中心;计算每个观测量(样本)到各个聚类中心的距离,按照就近原则将其分别分到放入各类中;重新计算聚类中心,继续以上步骤;满足停止条件时(如最大迭代次数等)则停止。
使用范围:要求用户给定分类数目,只适用于样本聚类(Q型),不适用于变量聚类(R型)。
(3)两步聚类法(智能聚类方法)
基本思想:先进行预聚类,然后再进行正式聚类。
适用范围:属于智能聚类方法,用于解决海量数据或者具有复杂类别结构的聚类分析问题。可以同时处理离散和连续变量,自动选择聚类数,可以处理超大样本量的数据。

聚类方法的选择 Choose Cluster Analysis Method

根据MATLAB官网的介绍Choose Cluster Analysis Method,目前其统计和机器学习工具箱提供了以下聚类方法:

  • Hierarchical Clustering 层次聚类
  • k-Means and k-Medoids Clustering k均值和k中位数聚类
  • Density-Based Spatial Clustering of Applications with Noise (DBSCAN) 基于密度的聚类算法
  • Gaussian Mixture Model 高斯混合模型
  • k-Nearest Neighbor Search and Radius Search 最近邻检索
  • Spectral Clustering 谱聚类

这些方法具有各自的特点,该网页对其进行了对比,对比的内容包括:

  • Basis of Algorithm 算法基础
  • Input to Algorithm 输入算法
  • Requires Specified Number of Clusters 需要指定数量的集群
  • Cluster Shapes Identified 识别出的团簇形状
  • Useful for Outlier Detection 对异常值检测有用

上面的内容还是很有用的,我觉得很有价值,不过不想看了。

简单聚类的实现

官网也给出了以上聚类分析方法的应用实例,比如Cluster Analysis就是k均值聚类和层次聚类的示例。该示例使用聚类分析来检查观测值或对象的相似性和相异性。数据通常可以自然划分到观测值组或簇中,同一簇中对象的特性是相似的,不同簇中对象的特性是相异的。

不过我已经不想看了,今年2月份,因为疫情的原因在家学习,闲来无事萌生了撰写博客的想法,至今也写了一些,算是个人学习的简单总结。在整个过程中也收获了很多,也帮助到了一些同样在学习的同道中人。

傻瓜攻略系列一开始就是想把自己掌握的一些方法整理下来,以备不时之需,但是慢慢地,我就开始计划着,要把MATLAB机器学习和深度学习工具箱的方法都学会,我也的确这样做了,代价是七月份到现在的遍地开花没有结果。之前看过一篇文章,说读博士千万不要想着什么都会,爱因斯坦也说过,学的越多越认识到自己的无知。我现在有些认识到自己的狂妄和无知了。

韩愈说:“闻道有先后,术业有专攻。”此言不虚,有人本科就发论文,有人早早就掌握了一门技术。我现在需要做的,并不是掌握多少种看似高级实则无用的方法,而是通过实际的科研活动,在不断的尝试和失败中学习如何做科研,学习如何成为一名合格的博士研究生。所以这篇博客不是傻瓜攻略的结束,而是我遍地开花阶段的结束。下一步,我的博客写作不会停,但是希望我是因为学习到了一项技能而写博客,而不是为了写博客去学习什么。

聚类结果的展示

下面这个网页里的可视化程序看上去颇有几分高大上的感觉,推荐一波。哪位看官学会了记得分享给大家,哈哈
可视化多变量数据

笔者的其他博客,欢迎大家阅读学习,共同进步
傻瓜攻略(一)——MATLAB主成分分析代码及结果分析实例

MATLAB中plotconfusion函数的应用

傻瓜攻略(二)——MATLAB数据挖掘之Apriori算法实现

win10系统中通过conda命令安装tensorflow(cpu版本,不用pip)

  • 11
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用Matlab进行聚类分析案例: ```matlab % 数据准备 X = \[20,7;18,10;10,5;4,5;4,3;1,1;1,2;6,3;8,2;8,0\]; % 计算距离矩阵 Y = pdist(X); SF = squareform(Y); % 构建聚类树 Z = linkage(Y, 'single'); % 绘制系统聚类树 dendrogram(Z); % 进行聚类 T = cluster(Z, 'maxclust', 3); ``` 这个案例,我们首先准备了一个包含10个样本的数据集X。然后,我们使用pdist函数计算了样本之间的距离矩阵Y,并使用squareform函数将其转换为方阵SF。接下来,我们使用linkage函数构建了聚类树Z,并使用dendrogram函数绘制了系统聚类树。最后,我们使用cluster函数对样本进行聚类,将样本分为3个簇,并将结果存储在变量T。 这个案例展示了如何使用Matlab进行聚类分析,通过计算距离矩阵、构建聚类树和进行聚类操作,我们可以将样本分为不同的簇,从而对数据进行分类和分析。 #### 引用[.reference_title] - *1* [聚类分析Matlab 程序—系统聚类(附有案例分析)](https://blog.csdn.net/henu111/article/details/81512314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Matlab聚类分析(Kmeans)](https://blog.csdn.net/qq_44646352/article/details/124266723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [机器学习——聚类实例 ( matlab代码 )](https://blog.csdn.net/image_fzx/article/details/80522061)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值