数据挖掘实战(聚类分析)

目录

数据探索

数据初步认识

查看数据相关信息

图形数据探索

回归分析

矩阵图分析

相关性分析

数据预处理

k-means聚类

算法简介

算法实现

k-medoids方法

算法简介

算法实现

层次聚类

som方法

实验对比


数据探索

数据初步认识

为研究我国31个省市的城镇居民生活消费的规律,根据调查资料作区域消费类型划分地区了解到数据集data.xlsx。部分数据如下图所示:

查看数据相关信息

先导入相关包

再查看数据集信息

查看摘要统计。

图形数据探索

回归分析

查看食品与衣着和居住之间的关系

绘制图形如下:

矩阵图分析

生成各特征之间关系的矩阵图:

相关性分析

最后,通过热图找出数据集中不同特征之间的相关性,高正值或负值表明特征具有高度相关性。

数据预处理

查看有无缺失值

可以看出没有缺失值,数据已经处理完毕的数据。

k-means聚类

算法简介

K-means聚类算法的最终目标就是根据输入参数k,把数据对象分成k个簇。基本思想:首先指定需要划分的簇的个数k值;然后随机地选择k个初始数据对象点作为初始的聚类中心;第三,计算其余的各个数据对象到这k个初始聚类中心的距离(这里一般采用距离作为相似性度量),把数据对象划归到距离它最近的那个中心所处在的簇类中;最后,调整新类并且重新计算出新类的中心。如果两次计算出来的聚类中心未曾发生任何的变化,那么就可以说明数据对象的调整己经结束,也就是说聚类采用的准则函数是收敛的,表示算法结束。

算法特点:

K-Means算法的特点就是调整一个数据样本后就修改一次聚类中心以及聚类准则函数的值,当n个数据样本完全被调整完后表示一次迭代完成,这样就会得到新的簇和聚类中心的值。若在一次迭代完成之后,聚类准则函数的值没有发生变化,那么表明该算法已经收敛,在迭代过程中值逐渐缩小,直到达到最小值为止。该算法的本质是把每一个样本点划分到离它最近的聚类中心所在的类。

算法实现

使用python中skicit-learn模块进行k-均值算法的实验。采用交叉验证的方法,分别取簇数为2,3,4,5,6这5种情况,分别计算簇中各点与类中心的距离平方和(CH系数)与轮廓系数如图所示。

先导入相关包

先导入相关包

再加载数据

查看加载的数据,生成一个数组

定义求聚类的函数

调用函数生成图形

得到结果如下图所示

图形可视化:

包括五种聚类的分析,并给出最佳的聚类结果。可以得到,当n为2时,聚类效果最好。

可以得到结果:

      北京、上海、浙江、广东等省份经济较为发达,消费水平较高聚集为一簇,其它省份聚集为另外一类,聚类结果比较合理。

k-medoids方法

算法简介

      K-中心点聚类算法的基本思想为:选用簇中位置最中心的对象,试图对n个对象给出k个划分,代表对象也被称为是中心点,其他对象则被称为非代表对象。最初随机选择k个对象作为中心点,该算法反复地用非代表对象来代替代表对象,试图找出更好的中心点,以改进聚类的质量;在每次迭代中,所有可能的对象对被分析,每个对中的一个对象是中心点,而另一个是非代表对象。每当重新分配发生时,平方误差所产生的差别对代价函数有影响。因此,如果一个当前的中心点对象被非中心点对象所代替,代价函数将计算平方误差值所产生的差别。替换的总代价是所有非中心点对象所产生的代价之和。如果总代价是负的,那么实际的平方误差将会减小,代表对象  可以被非代表对象替代。如果总代价是正的,则当前的中心点被认为是可接受的,在本次迭代中没有变化。

优点:对噪声点/孤立点不敏感,具有较强的数据鲁棒性;

        聚类结果与数据对象点输入顺序无关;

        聚类结果具有数据对象平移和正交变换的不变性等。

缺点:在于聚类过程的高耗时性。对于大数据集,K-中心点聚类过程缓慢的主要原因在于:通过迭代来寻找最佳的聚类中心点集时,需要反复地在非中心点对象与中心点对象之间进行最近邻搜索,从而产生大量非必需的重复计算。

算法实现

代码如下:

取data数据的部分列来进行k-medoids聚类

绘制图形如下图所示

分别得到分为2,3,4,5簇的结果,更加明确的得出结果。

层次聚类

      层次聚类的应用广泛程度仅次于基于划分的聚类,核心思想就是通过对数据集按照层次,把数据划分到不同层的簇,从而形成一个树形的聚类结构。

      层次聚类算法可以揭示数据的分层结构,在树形结构上不同层次进行划分,可以得到不同粒度的聚类结果。按照层次聚类的过程分为自底向上的聚合聚类和自顶向下的分裂聚类。目前大多数是自底向上的聚合聚类,自顶向下的分裂聚类比较少。

      1)自底向上的聚合聚类将每个样本看作一个簇,初始状态下簇的数目等于样本的数目,然后根据算法的规则对样本进行合并,直到满足算法的终止条件。代表算法: AGNES、BIRCH、ROCK

      2)自顶向下的分裂聚类先将所有样本看作属于同一个簇,然后逐渐分裂成更小的簇,直到满足算法终止条件为止。代表算法: DIANA。

算法实现:

定义函数

再绘制图形,得到以下结果

其中横轴为树状图高度,纵轴为各个省份的名称。

由图可知,在height为1500时,可以分为两类,第一类是浙江,北京,广东和上海,其他为第二类,和k-means得到的结果一致。

som方法

SOM(Self Organizing Maps ) 的目标是用低维目标空间的点来表示高维空间中的点,并且尽可能保持对应点的距离和邻近关系(拓扑关系),该算法可用于降维和聚类等方面。

根据层次聚类结果,当height为1000时,

实现降维可视化

定义函数如下:

得到结果如下:

每个颜色对应不同类的城市

可以很明显的看出聚类结果,上海远远超过了其他城市。

实验对比

根据实验结果对比,四种聚类方法都能很明显的看出聚类结果。

k-means:得到的结果为分为两类是最优,轮廓系数为62%,表示该分类最紧密,得到的结果也越准确。缺点是需要一个一个来求出每个分类的结果,分类讨论来得出哪种分类的最优,比较麻烦。

k-medoids:和k-means差不多,k-means的质心是各个样本点的平均,而k-medoids随机选取K个质心的值,但是k-medoids准确度最高,从结果来看的话,得到的数据相比k-means更加准确,更加明显的看出哪个地区的消费水平比较高,但是运行速度太慢。

层次聚类:绘制出图形来表示分类结果,并且分类结果在一个图形上表示出来,生成一个树状图,可以很准确的看出当值为多少时是分为几类,向横坐标轴上绘制一条竖线,相交处的点的个数即为分类的簇数,可以看出哪一种分类更加准确。

Som:根据层次聚类进一步分析结果,先降维,得到可视化图形。一个是图形,一个是树状图,在可视化方面,图形更能直观的表示出结果。

数据集和源码都在资源里,转战资源😀

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值