2018年世界杯足球賽開(kāi)賽在即,全世界的球迷都想知道:誰(shuí)將奪得令人垂涎的冠軍杯?

如果你不僅是個(gè)球迷,還是個(gè)技術(shù)達(dá)人,我猜你已意識(shí)到機(jī)器學(xué)習(xí)和AI也是目前的流行語(yǔ)。我們不妨結(jié)合兩者來(lái)預(yù)測(cè)誰(shuí)贏(yíng)得世界杯。
免責(zé)聲明:本文不該用于投注或任何財(cái)務(wù)決策。你要是選擇這么做,我也不會(huì)攔你(如果你中了頭彩,可別忘了我)。
足球比賽涉及好多因素;正因?yàn)槿绱耍羞@些因素?zé)o法在一個(gè)機(jī)器學(xué)習(xí)模型中加以分析。我只是想用數(shù)據(jù)搞一個(gè)有趣的項(xiàng)目……
目標(biāo)
目標(biāo)是使用機(jī)器學(xué)習(xí)來(lái)預(yù)測(cè)哪支球隊(duì)將贏(yíng)得2018年世界杯。
預(yù)測(cè)今年這屆世界杯每一場(chǎng)比賽的結(jié)果。
模擬下一輪比賽,比如四分之一決賽、半決賽和決賽。
這些目標(biāo)帶來(lái)了一個(gè)獨(dú)特而實(shí)際的機(jī)器學(xué)習(xí)預(yù)測(cè)問(wèn)題,需要解決各項(xiàng)機(jī)器學(xué)習(xí)任務(wù):數(shù)據(jù)整合、特征建模和結(jié)果預(yù)測(cè)。
數(shù)據(jù)
我使用了Kaggle的兩個(gè)數(shù)據(jù)集,可以在這里(https://www.kaggle.com/martj42/international-football-results-from-1872-to-2017/data)找到。我們將使用自1930年世界杯開(kāi)始以來(lái)所有參賽球隊(duì)的歷史比賽結(jié)果。
局限性:國(guó)際足聯(lián)排名是上世紀(jì)90年代搞起來(lái)的,因此缺少數(shù)據(jù)集的大部分內(nèi)容。于是我們堅(jiān)持使用歷史比賽記錄。
環(huán)境和工具:jupyter筆記本、numpy、pandas、 seaborn、matplotlib和scikit-learn。
我們先要對(duì)兩個(gè)數(shù)據(jù)集進(jìn)行一些探索性分析,做一些特征工程以選擇對(duì)預(yù)測(cè)最要緊的特征,做一些數(shù)據(jù)處理,選擇一個(gè)機(jī)器學(xué)習(xí)模型,最后將模型部署到數(shù)據(jù)集上。
開(kāi)始動(dòng)手吧!
要緊的事先說(shuō),導(dǎo)入必要的代碼庫(kù),并將數(shù)據(jù)集加載到一個(gè)數(shù)據(jù)框。

導(dǎo)入代碼庫(kù)

加載數(shù)據(jù)集……
為兩個(gè)數(shù)據(jù)集調(diào)用world_cup.head()和results.head(),確保數(shù)據(jù)集已加載到數(shù)據(jù)框中,如下所示:

探索性分析
分析這兩個(gè)數(shù)據(jù)集后,得到的數(shù)據(jù)集包含過(guò)去比賽的數(shù)據(jù)。因而得到的新的數(shù)據(jù)集對(duì)分析和預(yù)測(cè)將來(lái)的比賽很有用。
探索性分析和特征工程:這需要確定哪些特征對(duì)機(jī)器學(xué)習(xí)模型來(lái)說(shuō)很要緊,這是任何數(shù)據(jù)科學(xué)項(xiàng)目中最耗時(shí)的部分。
現(xiàn)在讓我們將目標(biāo)差異和結(jié)果這一列添加到結(jié)果數(shù)據(jù)集。

查看新的結(jié)果數(shù)據(jù)框。

然后我們將處理數(shù)據(jù)子集,這部分包括只有尼日利亞參加的比賽。這將幫助我們專(zhuān)注于哪些特性對(duì)一個(gè)國(guó)家來(lái)說(shuō)很要緊,然后擴(kuò)大到參加世界杯的那些國(guó)家。

第一屆世界杯在1930年舉辦。為年份創(chuàng)建一個(gè)列,并選擇1930年以后的所有比賽。

現(xiàn)在我們可以直觀(guān)顯示歷年來(lái)尼日利亞最常見(jiàn)的比賽結(jié)果。

獲得每個(gè)參賽國(guó)家的勝率是一個(gè)有用的指標(biāo),我們可以用它來(lái)預(yù)測(cè)每場(chǎng)比賽的最有可能的結(jié)果。
比賽場(chǎng)地關(guān)系不大。
范圍縮小到參加世界杯的球隊(duì)
為所有參與球隊(duì)創(chuàng)建一個(gè)數(shù)據(jù)框。

然后,我們會(huì)進(jìn)一步過(guò)濾結(jié)果數(shù)據(jù)框,只顯示1930年起出現(xiàn)在今年世界杯上的球隊(duì),并擯棄重復(fù)的球隊(duì)。

創(chuàng)建年份列,擯棄1930年之前的比賽,并擯棄不會(huì)影響比賽結(jié)果的列,比如date、home_score、away_score、tournament、city、country、goal_difference和match_year。

修改“Y”(預(yù)測(cè)標(biāo)簽),以便簡(jiǎn)化我們模型的處理。
如果主隊(duì)獲勝,winner_team列將顯示“2”,如果是平局,顯示“1”,如果客隊(duì)贏(yíng),則顯示“0”。


通過(guò)設(shè)置偽變量,將home_team和_team從分類(lèi)變量轉(zhuǎn)換成連續(xù)輸入。
使用pandas以及get_dummies()函數(shù)。它將分類(lèi)列轉(zhuǎn)換成獨(dú)熱(one-hot,數(shù)字“1”和“0”)表示,讓它們能夠加載到Scikit學(xué)習(xí)模型中。
然后,我們將X級(jí)和Y組分開(kāi),將數(shù)據(jù)分成70%是訓(xùn)練數(shù)據(jù),30%是測(cè)試數(shù)據(jù)。

我們將使用邏輯回歸,這是一種分類(lèi)器算法。這個(gè)算法如何工作?它通過(guò)使用邏輯函數(shù)來(lái)估計(jì)概率,從而度量分類(lèi)因變量和一個(gè)或多個(gè)自變量之間的關(guān)系。具體來(lái)說(shuō)是累計(jì)邏輯分布。
換句話(huà)說(shuō),在給出可能影響結(jié)果的一組數(shù)據(jù)點(diǎn)的情況下,邏輯回歸試圖預(yù)測(cè)結(jié)果(贏(yíng)或輸)。
實(shí)際上其工作方式是,你每次為算法饋送一次比賽,同時(shí)饋送上述的“數(shù)據(jù)集”和比賽的實(shí)際結(jié)果。然后,模型學(xué)習(xí)你饋送的每一個(gè)數(shù)據(jù)如何積極或消極地影響比賽結(jié)果,影響多大。
饋送足夠多的好數(shù)據(jù),你就有了可以用來(lái)預(yù)測(cè)未來(lái)結(jié)果的模型。
模型的好壞取決于饋送給它的數(shù)據(jù)。
不妨看一下最后的數(shù)據(jù)框:

看起來(lái)很棒?,F(xiàn)在我們準(zhǔn)備將這個(gè)傳遞給我們的算法:

我們的模型在訓(xùn)練集上的準(zhǔn)確率為57%,在測(cè)試集上的準(zhǔn)確率為55%。這看起來(lái)不太好,但暫且不用管它。
這時(shí)候,我們將創(chuàng)建一個(gè)數(shù)據(jù)框,我們將部署模型。
我們先開(kāi)始加載截至2018年4月的國(guó)際足聯(lián)排名數(shù)據(jù)集(https://us.soccerway.com/teams/rankings/fifa/?ICID=TN_03_05_01)和含有從這里(https://fixturedownload.com/results/fifa-world-cup-2018)獲得的小組賽階段保留球隊(duì)的數(shù)據(jù)集。排名較高的球隊(duì)將被視為比賽的“熱門(mén)”,因此它們放在“home_teams”這一列,這是由于世界杯比賽中沒(méi)有“主隊(duì)”或“客隊(duì)”。然后,我們根據(jù)每支球隊(duì)的排名位置將球隊(duì)添加到新的預(yù)測(cè)數(shù)據(jù)集。下一步將創(chuàng)建偽變量,并部署機(jī)器學(xué)習(xí)模型。
預(yù)測(cè)比賽
現(xiàn)在你想知道我們?cè)趺磥?lái)預(yù)測(cè)?碼了那么多代碼,說(shuō)了那么多,你啥時(shí)預(yù)測(cè)比賽?好了,馬上預(yù)測(cè)比賽了。
將模型部署到數(shù)據(jù)集
我們先將模型部署到小組賽。

這是小組賽的結(jié)果。







模型預(yù)測(cè)三場(chǎng)平局,它還在葡萄牙和西班牙之間穩(wěn)妥下注,但認(rèn)為西班牙勝率高。我用該網(wǎng)站(https://ultra.zone/2018-FIFA-World-Cup-Group-Stage)來(lái)模擬小組賽的比賽。
下面是模擬16輪淘汰賽。


模型預(yù)測(cè)四分之一決賽在這些球隊(duì)之間進(jìn)行:葡萄牙對(duì)陣法國(guó)、巴西對(duì)陣英格蘭、西班牙對(duì)陣阿根廷和德國(guó)對(duì)陣比利時(shí)。
預(yù)測(cè)如下:

半決賽
葡萄牙對(duì)陣巴西和德國(guó)對(duì)陣阿根廷
預(yù)測(cè):

最后是總決賽
巴西對(duì)陣德國(guó)
預(yù)測(cè):

根據(jù)這個(gè)模型,巴西很可能贏(yíng)得這屆世界杯。

轉(zhuǎn)自:云頭條
Copyright ? 2005-2020 www.allweyes.cn | All Rights Reserved 粵ICP備05105686號(hào)
Hello, please leave your name and email here before chat online so that we won't miss your message and contact you smoothly.