AI預測世界盃比賽結果,驚掉下巴!

帶你聊技術發表於2022-12-19

哈嘍,大家好。

今天看到Kaggle上有一個預測世界盃比賽結果的專案,截至目前 4 場比賽預測結果全中。

今天把原始碼研究了一下,做了中文註釋,給大家分享下。

AI預測世界盃比賽結果,驚掉下巴!

文末有原始碼和資料集的獲取方式。

提醒大家,本文只做學習交流使用,不做決策參考,更不要盲目賭球。

1. 獲取資料集

資料集使用 1872-2022年國際足球比賽資料和FIFA 1992-2022年球隊排名資料。

AI預測世界盃比賽結果,驚掉下巴!
AI預測世界盃比賽結果,驚掉下巴!

雖然有資料集很大,但作者只用了 2018-2022年的資料作為訓練資料。

df =  pd.read_csv("./kaggle/input/international-football-results-from-1872-to-2017/results.csv")

df = df[(df["date"] >= "2018-8-1")].reset_index(drop=True)
AI預測世界盃比賽結果,驚掉下巴!

2. 特徵工程

選取的特徵要能夠較好地反映預測結果,如:

  • 世界盃球隊的平均進球數
  • 球隊最近5場比賽的平均進球數
  • 世界盃球隊的平均犯規數
  • 球隊最近5場比賽的平均犯規數
  • 球隊在世界盃中 FIFA 平均排名
  • 球隊在最近5場比賽中 FIFA 平均排名
  • FIFA積分
  • 最近5場FIFA積分
  • 比賽得分
  • 最近5場比賽積分
  • Mean game points by rank faced at the Cycle.
  • Mean game points by rank faced at last 5 games.

透過觀察這些特徵的小提琴圖,篩選對預測結果又很強區分的特徵。

AI預測世界盃比賽結果,驚掉下巴!

對於值比較小的特徵,可以嘗試用箱型圖觀察。

AI預測世界盃比賽結果,驚掉下巴!

最終生成的特徵為:

最終特徵如下:

  • rank_dif
  • goals_dif
  • goals_dif_l5
  • goals_suf_dif
  • goals_suf_dif_l5
  • dif_rank_agst
  • dif_rank_agst_l5
  • goals_per_ranking_dif
  • dif_points_rank
  • dif_points_rank_l5
  • is_friendly

3. 建模

作者選擇了隨機森林GradientBoosting模型進行訓練,並對比他們的 AUC

AI預測世界盃比賽結果,驚掉下巴!
AI預測世界盃比賽結果,驚掉下巴!

最終選取GradientBoosting作為預測模型。

4. 預測

預測需要獲取 2022 世界盃比賽資料。

作者透過爬取維基百科解析出比賽資料,考慮到國內很多朋友無法訪問維基百科。原始碼中我已經將比賽資料放在本地檔案中。

AI預測世界盃比賽結果,驚掉下巴!

kaggle地址:https://www.kaggle.com/code/sslp23/predicting-fifa-2022-world-cup-with-ml/notebook

如果大家覺得本文對你有用就點個 在看 鼓勵一下吧,後續我會持續分享優秀的 Python+AI 專案。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2928610/,如需轉載,請註明出處,否則將追究法律責任。

相關文章