四年一度的世界盃本週就要開賽啦!若是你和我同樣是一名僞球迷,請先了解如下注意事項:算法
每到世界盃,一項保留節目就是預測當年冠軍,各路大神啦、名嘴啦、章魚啦、貓貓狗狗啦都少不了。此次我也來預測一把。但我不懂球啊怎麼辦?不要緊,我能夠用程序!(反正都是蒙唄)編程
數據來源機器學習
這份數據來自 Kaggle,是從1872年到2018年共38929場比賽的結果。咱們此次就用這份數據做爲預測的基礎。工具
可從文末項目中獲取。學習
另外介紹下 Kaggle,它一個數據科學競賽平臺,強烈建議研究數據分析、機器學習這方面的同窗多上去玩耍。區塊鏈
創建模型網站
有了這麼多歷史比賽數據,要怎麼來預測呢?我創建了以下幾條規則:人工智能
賽程模擬3d
基於以上的規則模型,咱們導入數據,經過 Python 程序模擬本屆世界盃32支球隊的64場比賽。code
這樣就「預測」了比賽的結果。
預測結果
因此,究竟這份代碼 run 出怎樣的結果?
由於不一樣的起始年限和平局閾值會獲得不同的結果。我嘗試使用 2006~2016 11個不一樣年限,和4組N的取值,獲得共44組比賽結果。最終奪冠的次數是:
巴西 23 次
西班牙 12 次
德國 6 次
英格蘭 3 次
看來,巴西隊仍是毋庸置疑的奪冠熱門。難怪各大菠菜網站都給他們開出最低的賠率。
可是拋開巴西隊不談,在個人結果中,英格蘭隊的表現異常得好。這主要源於他們近幾年對戰巴西的良好戰績:1勝2平0負。而相比之下,阿根廷恐怕又要「沒戲」了。
另外,塞內加爾和伊朗值得關注下,他們這幾年對戰其餘球隊的戰績不錯,或許會成爲黑馬:
2012年以來
塞內加爾 4勝3平1負
伊朗 5勝6平3負
歷史戰績查詢工具
固然,我這個模型是很粗糙的。不過原本嘛,足球是圓的,拿歷史數據預測比賽結果也就是娛樂一下,給看球增長點樂趣。若是你有本身的規則想實現,也能夠在我代碼的基礎上進行修改。代碼和數據的獲取方法見文末說明。
另外,我把部分數據導出,作了一個在線查詢的小工具,方便你直接查詢任意兩支球隊之間的對戰歷史。
能夠選擇不一樣的年限。同時我還自創了一套「賠率」計算,以供參考。
主隊綜合勝率=總場數/(主隊勝場+客隊負場)
由於這個賠率模型基於的更可能是歷史戰績,而強隊的對手可能是強隊,弱隊的對手可能是弱隊,致使賠率上的差別並無市面上的那麼大,但總的來看也基本符合勝負關係。若是你發現有某場比賽計算出的結果和別人開出的結果差別很大,那或許這會是場會爆冷的比賽哦
預測結果僅供參考,若有雷同純屬巧合。
最後,我忽然想到,我們國足對這32支球隊的戰績如何呢?若是在另外一個平行宇宙中有幸參賽,大概會是個什麼結果?因而……
2014年以來:2勝, 5平, 8負
2002年以來:8勝, 19平, 35負
彷佛只有和從未交過手的巴拿馬在戰績上能夠一戰。
好吧,當我沒說。仍是讓咱們安心享受世界盃的歡樂吧!
════
其餘文章及回答:
如何自學Python | 新手引導 | 精選Python問答 | Python單詞表 | 區塊鏈 | 人工智能 | 雙11 | 嘻哈 | 爬蟲 | 排序算法 | 我用Python | 高考
歡迎搜索及關注:Crossin的編程教室