聚类分析是根据事物自身的特性对被聚类对象进行类别划分的统计分析方法,它的目的是根据某种相似度度量对数据集进行划分。
目标数据文件:
目的:根据该数据中的变量特征进行聚类。
方法一:基于python在spyder中实现。
代码如下:
代码写到这,进行了导入数据、查看数据、清洗数据(数据类型变更、去缺失值)。
清洗完数据之后,筛选出不同年份的数据放入新的数据框,并对这些数据进行相关分析corr()
相关分析之后发现,这两个数值型变量“成年人吸烟占比”和“人均GDP (单位:国际元)”呈低度相关,决定根据这两个变量的变量特征进行聚类。
提取最近年份2016年的数据中的“成年人吸烟占比”和“人均GDP (单位:国际元)”放入nin数据框中,但是nin数据框中 “成年人吸烟占比”和“人均GDP (单位:国际元)”的数据差距太大,不在一个量纲,所以要进行数据标准化。
数据标准化之后,导入KMeans模块进行分类,分成了三类,并把分类标签添加进nin数据框中,再做散点图。
分类后导入轮廓系数评分模块metrics查看评分:0.4466479445680197。
评分越接近1,效果越好!
怀疑是不是分类出问题,肘部法则看一下。
坡度趋于平缓的位置就是分类的数量,上图中肘部法则建议分三类。
导出中心距离数据:
第一类:吸烟占比和其他两类有明显差异,比较高;
第二类:人均GDP和其他两类有明显差异,特别高;
第三类:吸烟占比、人均GDP和其他两类有明显差异,比较低。
聚类完成后,分析各分类对象的特征:
查看三个类别的数量
从代码中可以nine数据框中的数据是2016年的原始数据,此次聚类的数据就是2016的数据,所以在nine数据框中添加分类标签并导出为sk.csv.
在excel中对sk.csv中各类别数据进行描述性统计:
第一类,有61个国家,平均成年人吸烟占比接近30,人均GDP为中等水平。
第二类,有29个国家,平均成年人吸烟占比为21.5,在这三类国家里为中等,但是这一类国家的人均GDP较高。
第三类,有52个国家,平均成年人吸烟占比为12.3较低,人均GDP较低。
我觉得这个分类不够细,决定用第二种方法进行聚类
方法二:基于spss进行聚类分析。
一、k-means均值聚类(省略了步骤,只呈现结果)
发现spss均值聚类结果和python聚类分析结果几乎一样。
二、系统聚类(省略了步骤,只呈现结果)
系统聚类最大分四类,最少分三类
惊讶的发现系统聚类分三类变得更模糊了。
惊喜的系统聚类分四类:
第一类:只有2个国家,根据吸烟占比和人均GDP,发现这是两个富有的国家;
第二类:有81个国家,根据根据吸烟占比和人均GDP,发现包含了发达国家和发展中国家;
第三类:有42个国家,根据根据吸烟占比和人均GDP,发现包含了欠发展的国家;
第四类:有17个国家,根据根据吸烟占比和人均GDP,发现包含了较发达的国家。
在日常工作中,选择哪一个聚类结果要结合我们的业务场景,这就是我常用的聚类分析方法,OVER!
看过的点个赞鸭!