這一節將使用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