1. 程式人生 > >python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者

python在Scikit-learn中用決策樹和隨機森林預測NBA獲勝者




在本文中,我們將以Scikit學習的決策樹和隨機森林預測NBA獲勝者。美國國家籃球協會(NBA)是北美主要的男子職業籃球聯賽,被廣泛認為是首屈一指的男子職業籃球聯賽在世界上。它有30個團隊(美國29個,加拿大1個)。

在  常規賽期間,每支球隊打82場比賽,每場41場。一支球隊每年會有四次面對對手(16場比賽)。每個小組在其四次(24場比賽)中的其他兩個小組中的六個小組中進行比賽,其餘四個小組三次(12場)進行比賽。最後,每個隊都會在另一場比賽中兩次參加所有的球隊(30場比賽) 。

用決策樹和隨機森林預測NBA獲勝者

#匯入資料集並解析日期匯入熊貓作為pd df = pd .read_csv(“NBA_2017_regularGames.csv”,parse_dates = [“Date”])

從遊戲玩法的描述中,我們可以計算機會率。在每場比賽中,主隊和客隊都有可能贏得一半時間

預測類

在下面的程式碼中,我們將指定我們的分類類。這將幫助我們檢視決策樹分類器的預測是否正確。如果主隊獲勝,我們將指定我們的等級為1,如果訪客隊在另一個名為“主隊贏”的列中獲勝,我們將指定為0。

df [“主隊獲勝”] = df [“訪客積分”] <df [“主隊積分”]

主隊勝率:58.4%

#該陣列現在擁有scikit學習可以讀取的格式的類值。

特徵工程

我們將建立以下功能來幫助我們預測NBA 2017年的獲勝者。

無論是來訪者還是主隊都贏得了最後一場比賽。

一般認為哪個團隊更好?

scikit學習軟體包實現CART(分類和迴歸樹)作為演算法預設其 

決策樹類

決策樹實現提供了一種方法來停止構建樹,以防止過度使用以下選項:

•min_samples_split:可以建立任意小葉以便在決策樹中建立一個新節點•min_samples_leaf:保證節點中由一個節點產生的最小樣本數

建議使用min_samples_split或min_samples_leaf來控制葉節點處的取樣數。一個非常小的數字通常意味著樹將過度擬合,而大量的資料將阻止樹學習資料。

。決策的另一個引數是建立決策的標準基尼的不純和資訊收益是兩種流行的:

•基尼雜質:衡量決策節點錯誤預測樣本類別的頻率•“資訊增益:指示決策節點獲得多少額外資訊

功能選擇

我們通過指定我們希望使用的列並使用資料框檢視的值引數,從資料集中提取要素以與我們的scikit學習的DecisionTreeClassifier一起使用。我們使用cross_val_score函式來測試結果。

X_features_only = df [['Home Win Streak','Visitor Win Streak','Home Team Ranks Higher','Home Team Won Last','Home Last Win','Visitor Last Win']]。

結果準確性:56.0%

通過選擇我們製作的功能,精確度下降到56%。是否有可能通過新增更多功能來提高準確性。

混淆矩陣顯示了我們決策樹的正確和不正確的分類。對角線1295分別表示主隊的真正負數和真正的正數。左下角的1表示假陰性的數量。而右上角的195,誤報的數量。我們也可以檢視大約0.602的準確性分數,這表明決策樹模型已經將60.2%的樣本正確地歸類為主隊獲勝與否。

匯入pydotplus圖


出於探索的目的,測試較少數量的變數以便首先獲得決策樹輸出的感覺會很有幫助。最終的樹開始於X的分裂,我們的第一個解釋變數,主隊佇列更高。如果主隊排名較高的值小於4.5,那麼主隊就會鬆動,因為我們的二元變數具有虛假等值虧損值和真實同贏。


在本文中,我們將以Scikit學習的決策樹和隨機森林預測NBA獲勝者。美國國家籃球協會(NBA)是北美主要的男子職業籃球聯賽,被廣泛認為是首屈一指的男子職業籃球聯賽在世界上。它有30個團隊(美國29個,加拿大1個)。

在  常規賽期間,每支球隊打82場比賽,每場41場。一支球隊每年會有四次面對對手(16場比賽)。每個小組在其四次(24場比賽)中的其他兩個小組中的六個小組中進行比賽,其餘四個小組三次(12場)進行比賽。最後,每個隊都會在另一場比賽中兩次參加所有的球隊(30場比賽) 。

用決策樹和隨機森林預測NBA獲勝者

#匯入資料集並解析日期匯入熊貓作為pd df = pd .read_csv(“NBA_2017_regularGames.csv”,parse_dates = [“Date”])

從遊戲玩法的描述中,我們可以計算機會率。在每場比賽中,主隊和客隊都有可能贏得一半時間

預測類

在下面的程式碼中,我們將指定我們的分類類。這將幫助我們檢視決策樹分類器的預測是否正確。如果主隊獲勝,我們將指定我們的等級為1,如果訪客隊在另一個名為“主隊贏”的列中獲勝,我們將指定為0。

df [“主隊獲勝”] = df [“訪客積分”] <df [“主隊積分”]

主隊勝率:58.4%

#該陣列現在擁有scikit學習可以讀取的格式的類值。

特徵工程

我們將建立以下功能來幫助我們預測NBA 2017年的獲勝者。

無論是來訪者還是主隊都贏得了最後一場比賽。

一般認為哪個團隊更好?

scikit學習軟體包實現CART(分類和迴歸樹)作為演算法預設其  決策樹類

決策樹實現提供了一種方法來停止構建樹,以防止過度使用以下選項:

•min_samples_split:可以建立任意小葉以便在決策樹中建立一個新節點•min_samples_leaf:保證節點中由一個節點產生的最小樣本數

建議使用min_samples_split或min_samples_leaf來控制葉節點處的取樣數。一個非常小的數字通常意味著樹將過度擬合,而大量的資料將阻止樹學習資料。

。決策的另一個引數是建立決策的標準基尼的不純和資訊收益是兩種流行的:

•基尼雜質:衡量決策節點錯誤預測樣本類別的頻率•“資訊增益:指示決策節點獲得多少額外資訊

功能選擇

我們通過指定我們希望使用的列並使用資料框檢視的值引數,從資料集中提取要素以與我們的scikit學習的DecisionTreeClassifier一起使用。我們使用cross_val_score函式來測試結果。

X_features_only = df [['Home Win Streak','Visitor Win Streak','Home Team Ranks Higher','Home Team Won Last','Home Last Win','Visitor Last Win']]。

結果準確性:56.0%

通過選擇我們製作的功能,精確度下降到56%。是否有可能通過新增更多功能來提高準確性。

混淆矩陣顯示了我們決策樹的正確和不正確的分類。對角線1295分別表示主隊的真正負數和真正的正數。左下角的1表示假陰性的數量。而右上角的195,誤報的數量。我們也可以檢視大約0.602的準確性分數,這表明決策樹模型已經將60.2%的樣本正確地歸類為主隊獲勝與否。

匯入pydotplus圖


出於探索的目的,測試較少數量的變數以便首先獲得決策樹輸出的感覺會很有幫助。最終的樹開始於X的分裂,我們的第一個解釋變數,主隊佇列更高。如果主隊排名較高的值小於4.5,那麼主隊就會鬆動,因為我們的二元變數具有虛假等值虧損值和真實同贏。

▍關注我們

大資料部落 -中國專業的第三方資料服務提供商,提供定製化的一站式資料探勘和統計分析和資料探勘諮詢服務:y0.cn/teradat(諮詢服務請聯絡官網客服點選這裡給我發訊息QQ: 3025393450【服務場景】                     科研專案;                     公司專案外包;線上線下一對一培訓;學術研究。【大資料部落】提供定製化的一站式資料探勘和統計分析諮詢服務
 分享最新的大資料資訊,每天學習一點資料分析,讓我們一起做有態度的資料人【大資料部落】大資料部落提供定製化的一站式資料探勘和統計分析諮詢服務微信客服號:lico_9eQQ交流群:186388004  歡迎關注微信公眾號,瞭解更多資料乾貨資訊!