最近在张公子的公众号读到一篇文章《希腊怪物、本西蒙斯与勒布朗差别在哪里》,其中一小部分内容讨论的是本西蒙斯与勒布朗詹姆斯和魔术师约翰逊谁更像,一谈到“谁更像谁”的问题正在学习数据分析的我首相想到的肯定是聚类算法啦!
比较常见的聚类算法有k-Means算法、系统聚类算法。系统聚类算法是目前使用的比较多的聚类算法,在R语言中通常使用hclust()函数来做系统聚类。
张公子原文得出的结论是本西蒙斯更像魔术师约翰逊,那我们接下来看一下用R语言的hclust()函数做出来的聚类结果是否和张公子得出的结论一致呢?
张公子原文中总共讨论了五个人:魔术师约翰逊,J博士朱利叶斯欧文,小皇帝勒布朗詹姆斯,字母哥阿德托昆博,本西蒙斯(西蒙斯竟然还没有一个让人记住的绰号),接下来我们用R语言的ballr包分别获取以上5个人新秀赛季的数据,去掉统计数据中赛季、联盟、位置、球队四个统计指标(获取J博士的数据的时候出现了报错,自己没有发现什么原因,最后通过手动输入完成(找到原因了,players前少了一个斜杠,哎,太粗心啦!))(字母哥新秀赛季的数据简直惨不忍睹啊,可能是因为打球比较晚的原因吧,因此把字母哥的数据改为第三个赛季的数据)
哈哈,西蒙斯竟然和字母哥聚在了一起,不过相比于詹姆斯,西蒙斯还是更像魔术师的,接下来我们用字母哥第二个赛季的数据试一下
这个结果就和张公子得出的结论比较一致了,综合以上两个结果,得到的是同一个结论:本西蒙斯还是更像魔术师约翰逊的,相对于詹姆斯来说
还有一个R包ggdenro画聚类图是基于ggplot2的,画出来相对美观一点
聚类算法其实非常复杂,光method的参数就有好多,dist()求距离的方法也有好多,以上内容只是聚类的一个非常简单的应用。