[编者按] Python是大数据分析的常用技术之一,用Python进行数据分析的众多优势使得越来越多的人开始走上Python数据分析之路。后台也常常有读者来信,希望我们分享关于Python数据分析的知识。从本期开始,我们推出“小白学Python数据分析”专栏,本专栏邀请到一位Python数据分析的初学者小白,记录他学习Python数据分析的历程。大家可以和小白一起学习,并完成每期专栏中的实例,就可以掌握Python数据分析的常用方法和技术。教材方面,我们参考的是王宏志老师编著的《大数据分析原理与实践》。由于小白也在学习过程中,所以文中难免会有认识和理解不当之处,欢迎大家批评指正,更欢迎大家通过后台留言与我们进行讨论交流,大家共同向Python数据分析高手的目标前进!
小伙伴们大家好哇O(∩_∩)O,今天我们要学习的是聚类分析。通过本期的学习,大家可以了解以下内容:
什么是聚类分析
K均值聚类分析的原理
如何进行K均值分析
如何评估聚类分析的效果
1 聚类分析
聚类分析是将样品或变量按照它们在性质上的亲疏程度进行分类的数据分析方法。聚类分析是典型的无监督分析方法,也就是没有关于样品或变量的分类标签,分类需要依据样品或者变量的亲疏程度进行。而亲疏程度可以用个体间的差异性或者相似度来表示。
2 K均值聚类
k-means算法是一种很常见的聚类算法,它的基本思想是:通过迭代寻找k个聚类的一种划分方案,使得用这k个聚类的均值来代表相应各类样本时所得的总体误差最小,即最小化代价函数:
那么该如何选择比较好的聚类数呢?答案是用肘部法则去确认。肘部法则通过把不同聚类数的代价函数算出来,作出曲线,比如下图,k取5的时候是比较合适的,取值过大会增加计算量,取值过小则模型质量不好。
3 K均值分析实例
原理了解得差不多了,我们来试着动手操作一下吧!以下数据是针对美国某区域的一次人口普查结果,数据来源为http://archive.ics.uci.edu/ml/datasets/Adult。
我们先处理数据,将分类数据转换为数值数据。
然后用肘部法则找出最佳的聚类数。
结果如下:
可以看出,聚类数为3或者4时都比较好,我们选取4为聚类数。然后执行k-means算法就可以啦!
4 评估聚类分析效果
我们经常用CH指标来评估聚类分析的效果。CH指标通过类内离差矩阵描述紧密度,类间离差矩阵描述分离度,指标定义如下:
其中,n表示聚类的数目 ,k表示当前的类,trB(k)表示类间离差矩阵的迹,trW(k)表示类内离差矩阵的迹。CH越大代表着类自身越紧密,类与类之间越分散,即聚类结果更优。
算法实现如下:
当然,想要得到更好的模型,不一定把所有的指标都用上,比如本数据集中的education和education_num两个指标是强烈正相关的,不需要两个都用上。小伙伴们可以多试验几组指标,看看哪组可以得到更好的效果哦。
关于聚类分析我们就介绍到这里,小伙伴们可以试一试文中的例子,如果有问题,欢迎后台留言,我们期待和大家交流哦!
“大数据与数据科学家”公众号
主编:王宏志
特邀副主编:朱劼
副主编:丁小欧
责任编辑:齐志鑫,宋扬,王雨茁、魏龑,张荣恩
编辑: 陶颖安
-精彩内容,记得分享到朋友圈-
领取专属 10元无门槛券
私享最新 技术干货