App下載

Python預(yù)測NBA比賽結(jié)果

猿友 2018-07-27 18:13:01 瀏覽數(shù) (8109)
反饋

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄

下載W3Cschool手機App,0基礎(chǔ)隨時隨地學(xué)編程>>戳此了解

導(dǎo)語

利用Python簡單地預(yù)測一下NBA比賽結(jié)果。。。

這大概就叫蹭熱度吧。。。

畢竟貌似今天朋友圈都在刷NBA相關(guān)的內(nèi)容。。。

雖然我并不能看懂。。。

但這并不妨礙我瞎預(yù)測一波。。。

So,

以下內(nèi)容純屬瞎玩,如有雷同,算我倒霉。。。

NBA忠實球迷請自動忽略不好結(jié)果。。。


相關(guān)文件

網(wǎng)盤下載鏈接: https://pan.baidu.com/s/1EwdkonbYY54AxnIgqx9yYA

密碼: 1n93


主要思路

(1)數(shù)據(jù)選取

獲取數(shù)據(jù)的鏈接為:

https://www.basketball-reference.com/

獲取的數(shù)據(jù)內(nèi)容為:

每支隊伍平均每場比賽的表現(xiàn)統(tǒng)計;

每支隊伍的對手平均每場比賽的表現(xiàn)統(tǒng)計;

綜合統(tǒng)計數(shù)據(jù);

2016-2017年NBA常規(guī)賽以及季后賽的每場比賽的比賽數(shù)據(jù);

2017-2018年NBA的常規(guī)賽以及季后賽的比賽安排。

(2)建模思路

主要利用數(shù)據(jù)內(nèi)容的前四項來評估球隊的戰(zhàn)斗力。

利用數(shù)據(jù)內(nèi)容的第五項也就是比賽安排來預(yù)測每場比賽的獲勝隊伍。

利用方式為:

數(shù)據(jù)內(nèi)容的前三項以及根據(jù)數(shù)據(jù)內(nèi)容的第四項計算的Elo等級分作為每支隊伍的特征向量。

Elo等級分介紹(相關(guān)文件中有):

為方便起見,假設(shè)獲勝方提高的Elo等級分與失敗方降低的Elo等級分數(shù)值相等。

另外,為了體現(xiàn)主場優(yōu)勢,主場隊伍的Elo等級分在原有基礎(chǔ)上增加100。

(3)代碼流程

數(shù)據(jù)初始化;

計算每支隊伍的Elo等級分(初始值1600);

基于數(shù)據(jù)內(nèi)容前三項和Elo等級分建立2016-2017年常規(guī)賽和季后賽中每場比賽的數(shù)據(jù)集;

使用sklearn中的LogisticRegression函數(shù)建立回歸模型;

利用訓(xùn)練好的模型對17-18年常規(guī)賽和季后賽的比賽結(jié)果進行預(yù)測;

將預(yù)測結(jié)果保存到17-18Result.CSV文件中。


開發(fā)工具

Python版本:3.5.4

相關(guān)模塊:

pandas模塊、numpy模塊、sklearn模塊以及一些Python自帶的模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。


使用演示

在cmd窗口運行Analysis_NBA_Data.py文件即可:

結(jié)果:


更多

文章的初衷是為了讓公眾號推送的關(guān)于Python的小項目涉及的應(yīng)用領(lǐng)域更加豐富多彩。從而激發(fā)部分Python初學(xué)者的學(xué)習(xí)熱情,僅此而已。

這篇文章的技術(shù)含量并不高,模型簡單,數(shù)據(jù)處理方式也比較隨意。。。

可以優(yōu)化的地方大概包括:

增加訓(xùn)練數(shù)據(jù)(如多利用幾年數(shù)據(jù));

優(yōu)化訓(xùn)練模型(如sklearn中其他機器學(xué)習(xí)方法或者利用深度學(xué)習(xí)框架搭建相應(yīng)的網(wǎng)絡(luò)進行模型訓(xùn)練)。

0 人點贊