Python數據挖掘:決策樹算法預測雲頂之弈排名

前言

爲什麼要預測雲頂排名?學習,娛樂,其他目的。
通過什麼預測?通過收集到的前八回合血量數據和排名。(你也可以用你自己覺得好的數據,比如前n回合輸贏等)。
預測結果怎麼樣?遊戲沒結束誰也不知道結果怎麼樣,預測結果僅供參考,學習函數調用纔是最大的收穫。
大家看了覺得還行的話點個贊。

使用到的庫

pandas

打開csv,及對錶格數據篩選的方法。

sklearn

主要是DecisionTreeClassifier:封裝好的決策樹算法
export_graphviz:決策樹可視化輸出;解決問題:找不到graphviz可執行程序。可視化中文亂碼問題

joblib/pickle:

用來保存訓練好的模型;解決問題:python版本兼容

matplotlib

基本的繪圖,輸出圖片;解決問題:中文亂碼

requests

從網頁下載圖片,文件等。

雲服務器

由於數據是一步一步(一局)收集,我又忍不住每局都想試試,所以模型一直在變化。我不想讓自己的電腦去計算這個模型,所以把數據和代碼部署到雲服務器,將生成的文件共享,然後通過requests在自己的機器上把模型和結果下載下來。
使用雲服務器共享文件

結果展示

目前收集到的數據排名分佈
圖1 目前收集到的數據的排名分佈圖
預測結果
圖2 某局比賽預測結果圖

正文

數據說明

雲頂之奕簡介:自走棋,選擇自己的隊伍,獲取裝備,一共八位玩家對決,100滴血開始,0血或其他七個玩家0血結束。排名1-8
部分數據
圖3 基本數據展示
數據我是收集的前八回合的學了及排名數據,數據來源於直播中段位較高數據,其中type目前有
1:"我唯一喜歡的主播"的認真遊戲時的數據
2:該主播娛樂局的數據
3:鑽石左右分段的主播記錄
數據從9.15版本開始收集。
數據從玩家對戰開始,記錄每回合結束後的血量
回合8結束後進入第3輪選秀。

環境搭建

首先在自己電腦上跑起來:
安裝python:建議安裝Python3.7-64
安裝編譯器:建議Pycharm2018.3.8
新建一個項目,設置新環境後:File->Setting->Project:“項目名”->Project->Project Interpreter->+,修改爲清華源:https://pypi.tuna.tsinghua.edu.cn/simple/
安相關庫
目前我的版本如下:
安裝相關庫
圖4 需要安裝庫說明圖
安裝黑線庫即可,其他的依賴庫pip會自動安裝
修改Pycharm在未安裝庫上使用Alt+Enter install時的源
在 C:\Users\當前用戶\ 下新建pip文件夾,進入文件夾新建pip.ini
輸入:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

正式開始

在根目錄上右鍵,New Python File,然後第一次運行需要在此文件上右鍵run,以後可使用右上角綠三角快捷鍵。
0.包含庫:
包含的庫
1.定義獲取數據函數:
在這裏插入圖片描述打開我們的csv文件,dtype表示數據類型,我的正文都是int,不加他會有自己默認的類型,也可以指定部分列dtype={‘rank’:‘int’}
data[data[‘type’]!=2]篩選了type不爲2的所有數據
data.iloc[:,:15]表示0-15行的所有數據,data.iloc[0:3,:15]表示前三列。
選取完成後捨棄第一列,‘type’。
pandas操作:https://www.jb51.net/article/134615.htm
2.繪製所有數據的折線圖:
在這裏插入圖片描述
第一個range(1,9)相當於一個[1,…,8]列表在這裏作爲x座標,data.values[i,;8]作爲一條折線的y座標列表,i表示第i行,:8表示前8列。fkcolor是我定義的顏色列表:
顏色列表
然後紅到黑分別表示第1-8名,結果如圖。使用plt.save(‘1.png’)可以保存圖片到當前位置。
在這裏插入圖片描述
圖6 八回合血量折線圖
3.繪製名次分佈圖:
在這裏插入圖片描述
這裏第一個參數爲列表,value_counts()相當於分類計算數量了,然後.values取值(不要表頭)。
explode爲不同塊的間隔,數據有8類就*8,你如果只收集到了5中排名,這裏改成5。
labels相當於加上表頭,和.index和.values對應。後面一個參數表示保留小數位數。
title添加表態,此處可能會中文亂碼,解決方法:在之前(可以在import後面)加上:
解決中文亂碼
matplotlib操作:https://blog.csdn.net/Notzuonotdied/article/details/77876080
4:訓練模型的函數:
訓練模型的函數
如上圖,先iloc選出數據,此處start=0,end=8及取前8列數據。
DTC是DecisionTreeClassifier別名,此函數包括許多參數,本次現在最大深度爲8
其他參數有需要請參照:
https://blog.csdn.net/li980828298/article/details/51172744
fit()即開始訓練,完成後使用joblib或者picker保存
在這裏插入圖片描述
兩個dump()函數均有protocol參數,python3默認爲3,python2默認爲0;0,1,2可通用,另外,python3-64與python-32不兼容。
然後使用export_graphviz進行可視化,需要先安裝graphviz
windows下載.msi雙擊安裝。
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
lUbuntu使用命令 sudo apt-get install graphviz(先sudo apt-get update)
安裝了graphviz不需要設置環境變量,因爲設置了也找不到,需要在import下加上:
解決找不到graphviz
然後通過StringIO處理中文亂碼。
得到結果:
在這裏插入圖片描述
圖7 決策樹可視化圖
5.模型加載與調用:
調用模型
首先加載數據,補充一下start=0,end=;然後加載模型,我因爲不想自己的電腦算模型,所以放在雲服務器上了。用的時候再去下載:
在這裏插入圖片描述
這裏就是調用之前寫好的函數,預測就是將最後一行數據(-1:0)的x傳入訓練好的模型。然後調用predict。

使用雲服務器

ubuntu:https://blog.csdn.net/adley_app/article/details/78959864
winserver: https://blog.csdn.net/zsq520520/article/details/62039958

以上代碼已經可以完整使用,數據量不大速度也很快。雲服務器只是簡單的用來共享文件,主要是安裝python,安裝pycharm,然後安裝apache2,WinServer推薦安裝phpStudy,Linux就就很容易安裝了。然後將代碼運行生成的文件的目錄改到apache的WWW共享目錄(相當於根目錄),
在這裏插入圖片描述Linux爲 /var/www/Html。然後就可以像我一樣在雲服務器上運行代碼。通過公網ip/路徑就行。本地直接getFile()可以下載,都可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章