这一节将使用k-平均聚类方法根据篮球运动员的行为数据对运动员进行聚类,这样的聚类结果在与球队有关的各项工作中都具有参考价值。例如,可根据聚类结果判断球员风格,从而更好地进行上场球员的调配;引进新球员时可根据聚类结果挑选更适合球队的球员,弥补球队短板,避免球员同质化;球员还可参考聚类结果进行有针对性的训练等。本案例所用数据是2013-2014赛季NBA控球后卫的赛场行为数据,并已经过适当地处理(去除噪声和无效数据),数据可从教材资源平台下载。
首先导入需要使用的Python库。其中pandas提供了高效易用的数据分析工具,numpy是适用于科学计算的库,两者经常配合使用。matplotlib是Python中常用的绘图系统,用来做数据可视化非常方便。
In[1]:import pandas as pd
In[2]:import matplotlib.pyplot as plt
In[3]:import numpy as np
读入所需的数据,显示数据的前5行,可以看到数据包含33个数据项,其中包括球员姓名、在球队中所打的位置、年龄、赛季等。具体地,pos代表球员在球场上所打的位置,g代表本赛季参赛场数,pts代表总得分,ast代表助攻次数,tov代表失误次数,ppg=pts/g代表平均得分(Points Per Game),atr=ast/tov表示助攻失误比(Assist Turnover Ratio)。为了简单起见,在此案例中只使用其中的数据项ppg和atr进行聚类,感兴趣的同学可以探索使用更多的数据项进行分析。
In[4]:nba=pd.read_csv('nba_2013.csv')
In[5]:nba.head()
Out[5]:
player pos age ...season_end ppg atr
0 D.J.Augustin PG 26 ...2013 13.098592 2.504000
1 Leandro Barbosa PG 31 ...2013 7.500000 1.684211
2 Jose Barea PG 29 ...2013 8.354430 2.424000
3 Jerryd Bayless PG 25 ...2013 9.250000 2.365854
4 Steve Blake PG 33 ...2013 6.872727 3.009804