當前位置:
首頁 > 知識 > 用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面



AI研習社按:本文作者黎榮恆,原文載於作者個人博客,AI研習社已獲授權。


分類作為一種監督學習方法,要求必須事先明確知道各個類別的信息,並且斷言所有待分類項都有一個類別與之對應。但是很多時候上述條件得不到滿足,尤其是在處理海量數據的時候,如果通過預處理使得數據滿足分類演算法的要求,則代價非常大,這時候可以考慮使用聚類演算法。


聚類屬於無監督學習,相比於分類,聚類不依賴預定義的類和類標號的訓練實例。本文首先介紹聚類的基礎——距離與相異度,然後介紹一種常見的聚類演算法——k-means 演算法,並利用 k-means 演算法分析 NBA 近四年球隊實力。因為本人比較喜歡觀看 NBA 比賽,所以用這個當做例子了,通過這個例子大家可以用到各種實際的生活和生產環境中。

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面



在正式討論聚類前,我們要先弄清楚一個問題:如何定量計算兩個可比較元素間的相異度。


用通俗的話說,相異度就是兩個東西差別有多大,例如人類與章魚的相異度明顯大於人類與黑猩猩的相異度,這是能我們直觀感受到的。但是,計算機沒有這種直觀感受能力,我們必須對相異度在數學上進行定量定義。設


其中 X,Y 是兩個元素項,各自具有 n 個可度量特徵屬性,那麼 X 和 Y 的相異度定義為:


其中 R 為實數域。也就是說相異度是兩個元素對實數域的一個映射,所映射的實數定量表示兩個元素的相異度。下面介紹不同類型變數相異度計算方法:


1. 標量


標量也就是無方向意義的數字,也叫標度變數。現在先考慮元素的所有特徵屬性都是標量的情況。例如,計算 X= 和 Y= 的相異度。一種很自然的想法是用兩者的歐幾里得距離來作為相異度,歐幾里得距離的定義如下:


其意義就是兩個元素在歐氏空間中的集合距離,因為其直觀易懂且可解釋性強,被廣泛用於標識兩個標量元素的相異度。將上面兩個示例數據代入公式,可得兩者的歐氏距離為:


除歐氏距離外,常用作度量標量相異度的還有曼哈頓距離和閔可夫斯基距離,兩者定義如下:

曼哈頓距離:


閔可夫斯基距離:


歐氏距離和曼哈頓距離可以看做是閔可夫斯基距離在 p=2 和 p=1 下的特例。另外這三種距離都可以加權,這個很容易理解,不再贅述。


下面要說一下標量的規格化問題。上面這樣計算相異度的方式有一點問題,就是取值範圍大的屬性對距離的影響高於取值範圍小的屬性。例如上述例子中第三個屬性的取值跨度遠大於前兩個,這樣不利於真實反映真實的相異度,為了解決這個問題,一般要對屬性值進行規格化。所謂規格化就是將各個屬性值按比例映射到相同的取值區間,這樣是為了平衡各個屬性對距離的影響。通常將各個屬性均映射到 [0,1] 區間,映射公式為:


其中 max(ai) 和 min(ai) 表示所有元素項中第 i 個屬性的最大值和最小值。例如,將示例中的元素規格化到 [0,1] 區間後,就變成了 X』=,Y』=,重新計算歐氏距離約為 1.732。


2. 二次變數


所謂二元變數是只能取 0 和 1 兩種值變數,有點類似布爾值,通常用來標識是或不是這種二值屬性。對於二元變數,上一節提到的距離不能很好標識其相異度,我們需要一種更適合的標識。一種常用的方法是用元素相同序位同值屬性的比例來標識其相異度。


設有 X=,Y=,可以看到,兩個元素第 2、3、5、7 和 8 個屬性取值相同,而第 1、4 和 6 個取值不同,那麼相異度可以標識為 3/8=0.375。一般的,對於二元變數,相異度可用 「取值不同的同位屬性數 / 單個元素的屬性位數」 標識。


上面所說的相異度應該叫做對稱二元相異度。現實中還有一種情況,就是我們只關心兩者都取 1 的情況,而認為兩者都取 0 的屬性並不意味著兩者更相似。例如在根據病情對病人聚類時,如果兩個人都患有肺癌,我們認為兩個人增強了相似度,但如果兩個人都沒患肺癌,並不覺得這加強了兩人的相似性,在這種情況下,改用 「取值不同的同位屬性數 /(單個元素的屬性位數 - 同取 0 的位數)」 來標識相異度,這叫做非對稱二元相異度。如果用 1 減去非對稱二元相異度,則得到非對稱二元相似度,也叫 Jaccard 係數,是一個非常重要的概念。


3. 分類變數

分類變數是二元變數的推廣,類似於程序中的枚舉變數,但各個值沒有數字或序數意義,如顏色、民族等等,對於分類變數,用 「取值不同的同位屬性數 / 單個元素的全部屬性數」 來標識其相異度。


4. 序數變數


序數變數是具有序數意義的分類變數,通常可以按照一定順序意義排列,如冠軍、亞軍和季軍。對於序數變數,一般為每個值分配一個數,叫做這個值的秩,然後以秩代替原值當做標量屬性計算相異度。


5. 向量


對於向量,由於它不僅有大小而且有方向,所以閔可夫斯基距離不是度量其相異度的好辦法,一種流行的做法是用兩個向量的餘弦度量,其度量公式為:


其中 ||X|| 表示 X 的歐幾里得範數。要注意,餘弦度量度量的不是兩者的相異度,而是相似度!


討論完相異度, 我們可以正式定義聚類問題, 所謂聚類問題,就是給定一個元素集合 D,其中每個元素具有 n 個可觀察屬性,使用某種演算法將 D 劃分成 k 個子集,要求每個子集內部的元素之間相異度儘可能低,而不同子集的元素相異度儘可能高。其中每個子集叫做一個簇。與分類不同,分類是示例式學習,要求分類前明確各個類別,並斷言每個元素映射到一個類別,而聚類是觀察式學習,在聚類前可以不知道類別甚至不給定類別數量,是無監督學習的一種。目前聚類廣泛應用於統計學、生物學、資料庫技術和市場營銷等領域,相應的演算法也非常的多。本文僅介紹一種最簡單的聚類演算法——k 均值(k-means)演算法。


舉個栗子:

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面


我們先弄清楚 k-means 的計算過程:


1. 從集合 D 中隨機選取 k 個元素,作為 k 個簇的各自的中心;


2. 分別計算剩下的元素到 k 個簇中心的相異度, 將這些元素分別劃歸到相異度最低的簇;


3. 根據聚類結果,重新計算 k 個簇各自的中心,計算方法是取簇中所有的元素各自維度的算術平均數;


4. 將 D 中全部元素按照新的中心重新聚類;


5. 重複第 4 步,直到聚類結果不再變化;


6. 將結果輸出。


下面列表是 NBA 近四年的常規賽和季後賽戰績(因為 16/17 季後賽還沒打完,所以該數據暫不收錄):

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面


下面對數據進行 [0,1] 規範化, 下面是規範化後的數據:

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面



接著用 k-means 演算法進行聚類,設 k = 5,即將 30 支球隊分成 5 個集團。現抽取勇士、快船、掘金、國王、76 人的值作為五個簇的種子,即初始化五個簇的中心為:


A,B,C,D,E,


下面分別計算所有球隊分別對五個中心點的相異度,這裡以歐幾里得距離作為相異度,以下為我求得的結果:

用 Python 分析四年NBA比賽數據,實力最強的球隊浮出水面



從聚類得到結果可以看出,近四年實力最強的球隊為騎士和勇士隊,或者很多球迷會有其他的意見,但至少從數據層面來講,騎士和勇士隊是近四年實力最強的球隊,為第一集團;接下來的球隊基本上為每年必進季後賽的球隊,包括馬刺、雷霆、快船、公牛等球隊,為第二集團;第三集團則凱爾特人、黃蜂、小牛等著偶爾進入季後賽的球隊;接下來就是基本無緣季後賽和每年基本墊底的第四集團和第五集團了。


本文只是講述關於聚類小案例的應用,其實聚類有著非常廣泛的應用,包括圖像分割,生物種群分類,其實早期移動公司也是根據聚類推出適合不同人群使用的電話卡(動感地帶、全球通、神州行等)。


本例源碼地址:


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python 面試問答 Top 25
Python函數里的愛情故事
用Python分析周杰倫6.5W字的歌詞,原來他是這樣的人
為什麼有那麼多人選擇Python,真的有那麼好嗎?

TAG:Python |

您可能感興趣

LOL:Uzi成衡量AD實力標準 JackeyLove不比小狗差了?
LPL世紀大戰EDG1:2不敵RNG,UZI實力碾壓iboy!
overlord動畫六位BOSS實力對比 第二季敵人整體實力比不過第一季
華為P20 Pro/iPhone 對比:抓拍差距足見整體實力差距
發揮M 功率實力,最強寶馬M2 Competition不僅僅是換了個引擎
實力打臉!iPhone X銷量是iPhone 8/8 Plus的兩倍,但或將停產
以實力和人氣取勝 Nina&Papa將代表阿朵戰隊出戰總決賽
LOL:號稱比Uzi更強的Deft實力到底如何?若回到EDG能否取代iBoy
BLACKPINK大分析,有顏值有實力你最喜歡誰?
LOL:RNG擊敗SNAKE取得七連勝!uzi的對線實力真是強!
AI雙攝實力不凡,小米MIX 2S獲DxOMark綜合97分
坤音四子 ONER正式出道,整體實力不及Nine Percent
紅米5 Plus可升級MIUI V.0版本,全面屏手勢發揮全面屏實力
vivo APEX上手體驗,我被vivo實力圈粉了!
vivo X21實力對標iPhone X,還有比這更能吹的嗎?
實力解說Micro LED與OLED、LCD有何差異
辣評LPL最新實力榜:letme有望成為中國的faker?
Ctrlbox 獲得數百萬元天使輪融資,PaaS 平台進化為 SasS 領域的實力派
HUAWEI P20 Pro評測:極光色太美,三攝確有真實力
Jackeylove實力有多強,Rookie評價他是沒有經驗的UZI