前言
我们接着《从零开始学Python【28】--K均值聚类(理论部分)》一文,继续跟大家分享一下如何借助于Python和R语言工具完成K均值聚类的实战。本次实战的数据来源于虎扑体育(https://nba.hupu.com/stats/players),我们借助于NBA球员的命中率和罚球命中率两个来给各位球员做一次“人以群分”的效果。
首先,我们使用pandas中的read_html函数读取虎扑体育网页中的球员数据表,然后再对数据作清洗(主要是数据类型的转换、变量的重命名和观测的删除):
本次一共获得286名球员的历史投篮记录,这些记录包括球员姓名、所属球队、得分、各命中率等信息,下面我们仅使用球员的命中率和罚球命中率来做聚类,主要是为了方便展现聚类效果的图形。首先,我们来看看这两个指标下的散点图:
通过肉眼,似乎还无法对这286名球员进行聚类(画圈),如果画圈的话,该划为几类合适呢?一般我们可以通过迭代的方式选出合适的聚类个数,即让k值从1到K依次执行一遍,再查看每一次k值对应的簇内离差平方和之和的变化,如果变化幅度突然由大转小时,那个k值就是我们选择的合理个数。具体我们通过图形展现来说明上面的文字:
从图中结果显示,当k为7时,看上去簇内离差平方和之和的变化已慢慢变小,那么,我们不妨就将球员聚为7类。如下为聚类效果的代码:
上图中,散点的不同颜色表示的是聚为不同的簇,黑色五角星为各簇的中心点,看上去其聚类效果有那么点意思。到此,关于使用Python实现K均值聚类的实战我们就分享到这里,接下来将使用R语言重新复现一遍,希望对R语言熟悉的朋友有一点的帮助。如下是R语言的复现脚本:
结语
OK,关于使用Python和R语言完成K均值聚类的实战我们就分享到这里,如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。
关注“每天进步一点点2015”,与小编一同进步!
领取专属 10元无门槛券
私享最新 技术干货