本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:清风数学建模:https://www.bilibili.com/video/BV1DW411s7wi
聚类和分类的区别:分类是已知类别的,聚类是未知的。
一、案例背景
如何根据下表的数据将31个省份分类?
二、K-means聚类算法
2.1 算法原理
?
2.2 K-means算法优缺点
优点:算法简单快速,对于数据量较大时,效率较高;
缺点:使用者在开始时必须给定生成的种类K;对于初值比较敏感;对于孤立点的数据比较敏感;
在下方介绍的K-means算法可以解决后面两个缺点。
三、K-means++算法
3.1 算法原理
?
3.2 算法实现
首先将数据导入进SPSS,再执行下图操作(注:SPSS里的K-均值聚类默认就是K-means++算法),迭代可以自己调,聚类的数目暂时不知道,可以先默认为2。
现在分类的结果就出来了:
3.3 其他
现在在原来的数据后面就会出现标准化后(消除量纲后)的数据,这时就可以用这些新数据重复上面的操作了。
四、系统(层次)聚类
4.1 算法原理
?
我的理解:在所有数据中选择距离最短的两个数据看作一类,两两一类,再在这些类中选择距离最短的两类看作一类,两两合成一个新的大类,以此类推,不断重复这个过程,直至形成最大的一类。
算法流程:
4.2 算法实现
首先在SPSS中导入数据,再执行下图操作,如果数据的量纲不一样,在方法里勾选上标准化。
在生成的结果里有个聚类谱系图(树状图),这个图就是我们要的结果,比如下面这个:
?
可以看到,最终结果是分成了一个大类的,在这里面你想分成几类,就可以分成几类。右边的第一条红色竖线就将所有的数据分成了两类,一类是山西—海南,一类是福建—广东;第二条竖线就分成了三类,一类是山西—海南,一类是福建—北京,一类是上海—广东;以此类推......
结果里还有个集中计划表有用,如下图,它可以帮助我们确定要聚成多少类(K值)。
肘部法则
肘部法则可以确定到底要聚成多少类。
大致内容如下(可放入论文):
?
将集中计划表中,系数那列复制到Excel并降序,生成一个散点图,调整一下坐标轴(本案例中有31个待分类,故可将横坐标设为1-30),方便观察,最终呈现在论文里的结果如下图的散点图就可。现在就可以确定聚类的数量了。
?
现在便再次重复上面的操作,不过在保存那里就需要输入K的取值了,如图:
?
这里取的K 值是3,实际的K 取决于那张聚合系数散点图,剩下的步骤都是一样的,最终就会在原始数据的后面出现聚类的结果(呈现在论文里的时候自己解释这三类分别是什么什么),如下图:
接下来根据指标的数量来画聚类的结果图,指标为2个或3个时才能画这个图(本案例中有8个指标,得到的聚类结果图仅为演示的,实际中不会画出来),因为2个指标即为二维图3个指标即为三维图,若大于3个指标,图就不好看了。
步骤如下(详见视频50:00):
?
在生成的图里点击小圆点、文本、背景可以修改颜色,文本、颜色,搞成如下两个图就差不多了
?
四、DBSCAN算法
4.1 算法原理
?
简洁的话来说就是:谁和我挨得近,谁是我兄弟,兄弟的兄弟,也是我的兄弟。
?
我的理解:Eps(到时候会让你自己取一个)就是半径的意思;Minpts(到时候也会让你自己取一个)就是在所有的数据中随即抽一个幸运儿数据,以这个幸运儿数据为圆点形成一个圆(半径就是自己取的那个半径),Minpts就是这个圆里面数据的个数。核心点,边界点,噪音点,就不解释了,应该看得懂吧。
4.2 算法实现
?算法实现详见清风的空间。
优缺点:
?
图上说的很”DBSCAN“就是作出的散点图是呈现出来一个形状的话就用这个算法。
注:代码不要直接抄下来,怕查重,可加上自己的注释,或者将变量名这些给改了,这样就是自己的了,流程图这些也是的,自己画,也可以加深理解。