python聚类分析_Python学习100天-Day17(数据分析篇-聚类分析)

Day17-聚类分析

26fb62aa980d921c1e2c085e3263ba3d.png

今天我们来一个简单的实战,主要是通过运用pandas库做数据的预处理,然后通过调用sklearn库里面的K-means方法对数据做一个聚类处理,目的是通过聚类分析,将不同位置的球员作一个简单的分组。看看你的明星属于第几档。

K-means:k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。

一、数据预处理

大家先打开复制的数据,要注意到三个问题:第一个是球员名字带斜杠,可能是复制的时候格式的问题;第二个是数据有空值就是所说的NA值;第三是球员转会后名字会出现二次以上。

第一步:提取球员名称:

b1902f129709fa5f964e830922cfd87f.png

第二步,填充空值,利用fillna,函数形式:fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

nba.fillna(value=0,inplace=True)

第三步,球员合并,仔细观察数据可以发现数据中的球队的TOT字段合并了有个转会球员的数据,我们可以把这个数据筛选出来,我利用了一个小技巧,除重,保留第一项。

drop_duplicates 函数,根据Player除重,然后保留第一项。

因为我们分析球员本身,没有涉及到球队的操作,所以可以取球员的总数据分

nba.drop_duplicates(subset='Player',keep='first',inplace=True)

二、确定分析字段

我们先分析PG的情况,确立两个分析字段我这边就选择了场均得分,和助攻失误比来对PG进行分组,如果大家有更好的指标来分组的话也可以,不过目前大家还是尝试用两个维度来进行分析,多维度的我还没有学习到,以后有机会在给大家讲解。

4bacdf4054fb9fb92a53d8d81294cec8.png

画出的图片是这样:联盟PG根据这两个指标大致的分类是这样。

cfb63c5fb6f63f6e07ee5072d16da74b.png

三、实现算法

我说一下k-means算法的原理,大致就是先随机确定K个类簇,然后计算中心与各个数据点的距离的平均值,然后不断的调整中心位置,最后让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。基本的算法实现会比较复杂,我们这边直接可以使用sklearn中集成好的KMeans方法去分析,可快速的对数据进行简单的聚类分析:

478522eae0fc013f6b6e271e03318bdb.png

最后大家可以打开保存的文件,就可以查询到球员的类别名称,可以对应可视化图片观察数,我这边分析出来紫色的球员是第一个阶梯,居然是哈登,位置是PG,不是SG,是不是因为他持球时间过长,被定义未PG呢。

相信大家可以利用这个模型举一反三了,分析不同位置的球员进行分析,不过要注意的是,确定这个分析结果是否有意义,跟你选择分析的维度有很大关系,例如PG要看的主要是助攻和失误,那么C就是篮板和盖帽了。大家尝试一下吧,有问题或者更好的建议可以留言给我,我也是刚学,只是把学习的过程分享给大家。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值