?

基于機器學習算法的足球世界杯冠軍預測模型研究

2019-01-06 02:19鄒燕飛劉淑英錢紅琳
中國科技縱橫 2019年22期
關鍵詞:機器學習

鄒燕飛 劉淑英 錢紅琳

摘 要:本文將機器學習的思想應用到足球世界杯冠軍預測領域,選用近年來的足球世界杯小組賽數據作為實驗樣本,對樣本進行預處理后分為訓練樣本和測試樣本,采用機器學習的監督學習算法,先對訓練樣本進行學習,然后利用學習到的分類器對測試樣本進行分類。

關鍵詞:機器學習;特征分類;logistic算法;足球世界杯

中圖分類號:TP391.9 文獻標識碼:A 文章編號:1671-2064(2019)22-0024-02

0 引言

本文主要是構建2018年足球世界杯比賽預測的模型,預測關于整個世界杯比賽的小組賽結果,分別為模擬四分之一決賽、半決賽以及決賽。該模型的建立主要可分為四步,即數據采集、數據預處理、模型訓練、模型測試。

本模型使用的樣本數據截取自1930年第一屆以來入圍2018俄羅斯世界杯小組賽的球隊信息,將近40000行。該模型采用百分之八十的訓練集,百分之二十的測試機來進行模型訓練。模型具體實現分為五個步驟,分別是獲取數據、預處理、獲取模型、模型訓練及測試。下面來詳細介紹每個步驟的實現。

1 模型實現

1.1 獲取數據

我們通過pandas.read_csv函數實現我們所需數據的讀入,讀取方式見以下代碼,其中'C:/Users/Administrator/Desktop/FIFA/datasets/World Cup 2018 Dataset.csv'表示文件所在路徑,world_cup表示參加世界杯球隊的信息,results表示1872年到2018年足球比賽的結果通過pandas的read_csv()函數來加載數據集,返回DataFrame,它是二位標記數據結構,列可以是不同的數據類型,是最常用的pandas對象。

1.2 數據預處理

為了使預測的結果盡可能的準確,我們對加載的數據進行處理,通過主場和客場的勝球數相減得到目標差異和贏的隊伍。所以我們在結果數據集中添加兩個特征:平局和勝利、凈勝球數(目標差異)。

1.3 特征提取

數據非常龐大,我們做一個數據子集,僅包含尼日利亞的比賽,先注目在一個球隊上發現哪些特征對一個國家有效,然后推廣到所有參與世界杯的所有國家。我們可以利用seaborn來畫圖,seaborn是對matplotlib更高級的封裝。代碼如下:

import matplotlib.pyplot as plt

import seaborn as sns

fig, ax = plt.subplots(1)

fig.set_size_inches(10.7, 6.27)

sns.set(style='darkgrid')

sns.countplot(x='Nigeria_Results', data=winsdf)

1.4 獲取模型及訓練

經過特征提取,發現比賽發生在哪個場館,并沒有對結構有重大影響。所以縮小數據集,僅保留參賽隊。

df_teams_home = results[results['home_team'].isin(worldcup_teams)]

df_teams_away = results[results['away_team'].isin(worldcup_teams)]

df_teams = pd.concat((df_teams_home, df_teams_ away))

df_teams.drop_duplicates()

year = []

for row in df_teams['date']:

year.append(int(row[:4]))

df_teams['match_year'] = year

df_teams_1930 = df_teams[df_teams.match_year >= 1930]

df_teams_1930 = df_teams.drop(['date', 'home_score','away_score','tournament','city', 'country','goal_difference','match_year',axis=1)

用isin函數判斷這個隊伍是否是參加世界杯的隊伍。鎖定參加世界杯的隊伍,用concat重新整合我們的結果集表格,整合之后可能含有重復的隊伍,我們需要用drop_ duplicates()函數去掉重復的隊伍。用int(row[:4])把字符串前四個轉化成int型,和1930比較,篩選出1930年之后的隊伍。屬性特征過多,會造成維數災難問題,所以就需要去掉這些不相關特征,降低學習任務的難度。通過drop函數去掉1930年之前的比賽和不會影響到比賽結果的數據列,例如日期、主場進球數、客場進球數、錦標賽、城市、國家、目標差異和比賽年份。

為了簡化模型的處理,我們修改一下預測標簽。代碼如下所示。

df_teams_1930 = df_teams_1930.reset_index(drop= True)

df_teams_1930.loc[df_teams_1930.winning_ team==df_teams_1930.home_team,'winning_t-eam']=2

df_teams_1930.loc[df_teams_1930.winning_team == 'Draw','winning_team']=1

df_teams_1930.loc[df_teams_1930.winning_team= =df_teams_1930.away_team,'winning_t-eam']=0

用drop_index(drop=True)來改變index下標,因為我們winning_team這列都是字符,我們要把字符轉化成數字。如果主場隊伍獲勝,那么獲勝隊伍則顯示“2”,如果平局則顯示“1”,如果是客場隊伍獲勝則顯示“0”。

通過設置啞變量,將主場隊伍和客場隊伍從分類變量轉換成連續變量。這時就要運用get_dummies()函數,這個函數它可以實現一種獨特的pandas編碼方式,它會將擁有不同值的變量轉換成一位有效值,以便將它們加載到Scikit-learn模型中。將使用邏輯回歸,因為邏輯回歸可以針對一組可以影響到結果的既定數據集嘗試預測結果輸贏。一次輸入一場比賽到算法中。然后模型就會學習輸入的每條數據對比賽結果產生了積極的效果還是消極的效果,以及影響的程度。經過充分的(好)數據的訓練后,就可以得到能夠預測未來結果的模型。第一步導入模型,調用邏輯回歸LogisticRegression()函數。第二步Fit()訓練,調用fit(x,y)的方法來訓練模型,其中x為數據的屬性,y為所屬類型接下來,我們將數據按照80%的訓練數據集和20%的測試數據集分成X集和Y集進行學習和交叉驗證,第三步predict()預測。利用訓練得到的模型對數據集進行預測,返回預測結果。

利用訓練得到的模型對數據集進行預測,返回預測結果。具體實現代碼如下。

final=pd.get_dummies(df_teams_1930,prefix=['home_team','way_team'],columns=['home_team', 'away_team'])

X = final.drop(['winning_team'], axis=1)

y = final["winning_team"]

y = y.astype('int')

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.80, random_state=42)

logreg = LogisticRegression()

logreg.fit(X_train, y_train)

score = logreg.score(X_train, y_train)

score2 = logreg.score(X_test, y_test)

print("訓練集結果: ", '%.3f'%(score))

print("測試集結果: ", '%.3f'%(score2))

我們將這些數據傳遞到算法中,我們的訓練集結果是55.4%,測試集結果是53.8%,說明我們這個模型可行。

1.5 模型測試

這里我們獲取2018的國際足球聯盟排名數據fifa_ rankings.csv,和2018世界杯參賽隊伍信息fixtures.csv。在此數據上應用我們的訓練模型。

2 比賽結果及分析

根據所構建的模型,應用到小組賽檢測中,檢測每一場比賽的輸贏概率。通過選擇贏的隊伍作為比賽勝利一方對小組賽出現隊伍進行預測。預測小組出線16支隊伍為:烏拉圭、葡萄牙、法國、克羅地亞、巴西、墨西哥、英格蘭、哥倫比亞、西班牙、俄羅斯、阿根廷、秘魯、德國、瑞士、波蘭、比利時,其中13支隊伍出線進入16強。預測的準確率是81.2%。這樣看來16強預測效果還是很不錯的。

3 結語

算法還有些待改進優化的地方。一是因為足球不確定因素太多,如果僅根據往年輸贏來判斷的話,結果可能有些差異,所以可以通過國際足球聯盟比賽的數據來評估出關于每一個球員的水平,根據球員的水平作為參考。二是利用混淆矩陣,混淆矩陣是分析模型好壞的,它可以幫我們分析出模型預測中哪些有誤。三是為了提高模型預測的準確度,可以將多個模型組合在一起。

參考文獻

[1] 戴維.邏輯回歸解決文本分類問題[J].通訊世界,2018,25(08):266-267.

[2] 吳曉杰.基于多情境數據和半監督代價敏感模型的場所個性化語義識別[D].杭州:浙江大學,2017.

[3] 黃輝.基于ReliefF的多標簽特征選擇算法研究[D].廣州:廣東工業大學,2018.

[4] 趙琰.第31屆奧運會女子足球比賽攻守轉換特征分析[D].新鄉:河南師范大學,2018.

Soccer World Cup Champion Prediction Based on Machine Learning Algorithm Model research

ZOU Yan-fei,LIU Shu-ying,QIAN Hong-lin

(Computer College of Xianyang Normal University,Xianyang ?Shaanxi ?712000)

Abstract:In this paper,the idea of machine learning is applied to the prediction field of football World Cup champions. The data of recent football World Cup group matches are selected as experimental samples. After preprocessing, the samples are divided into training samples and test samples. The supervised learning algorithm of machine learning is used to learn the training samples first,and then the test samples are classified by the learned classifier.

Key words:Machine learning; Feature classification; Logistic algorithm; Football World Cup

猜你喜歡
機器學習
前綴字母為特征在維吾爾語文本情感分類中的研究
下一代廣播電視網中“人工智能”的應用
基于支持向量機的金融數據分析研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合