前言:
此刻朋友们对“pythonec”大概比较关怀,同学们都想要知道一些“pythonec”的相关文章。那么小编也在网摘上网罗了一些有关“pythonec””的相关内容,希望你们能喜欢,同学们快快来学习一下吧!Day17-聚类分析
今天我们来一个简单的实战,主要是通过运用pandas库做数据的预处理,然后通过调用sklearn库里面的K-means方法对数据做一个聚类处理,目的是通过聚类分析,将不同位置的球员作一个简单的分组。看看你的明星属于第几档。
K-means:k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。
一、数据预处理
大家先打开复制的数据,要注意到三个问题:第一个是球员名字带斜杠,可能是复制的时候格式的问题;第二个是数据有空值就是所说的NA值;第三是球员转会后名字会出现二次以上。
第一步:提取球员名称:
第二步,填充空值,利用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进行分组,如果大家有更好的指标来分组的话也可以,不过目前大家还是尝试用两个维度来进行分析,多维度的我还没有学习到,以后有机会在给大家讲解。
画出的图片是这样:联盟PG根据这两个指标大致的分类是这样。
三、实现算法
我说一下k-means算法的原理,大致就是先随机确定K个类簇,然后计算中心与各个数据点的距离的平均值,然后不断的调整中心位置,最后让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。基本的算法实现会比较复杂,我们这边直接可以使用sklearn中集成好的KMeans方法去分析,可快速的对数据进行简单的聚类分析:
最后大家可以打开保存的文件,就可以查询到球员的类别名称,可以对应可视化图片观察数,我这边分析出来紫色的球员是第一个阶梯,居然是哈登,位置是PG,不是SG,是不是因为他持球时间过长,被定义未PG呢。
相信大家可以利用这个模型举一反三了,分析不同位置的球员进行分析,不过要注意的是,确定这个分析结果是否有意义,跟你选择分析的维度有很大关系,例如PG要看的主要是助攻和失误,那么C就是篮板和盖帽了。大家尝试一下吧,有问题或者更好的建议可以留言给我,我也是刚学,只是把学习的过程分享给大家。
标签: #pythonec