当前位置: 首页>Python>正文

python英雄對戰代碼_用 Python 分析了 1982 場英雄聯盟數據,開局前預測游戲對局勝負!...

python英雄對戰代碼_用 Python 分析了 1982 場英雄聯盟數據,開局前預測游戲對局勝負!...

前言

如今,只要隨便進入一個網吧,都會發現玩《英雄聯盟》的人是最多的,可以這么說,《英雄聯盟》已經是當之無愧的端游一哥。而在擁有如此基數玩家的《英雄聯盟》,已經不僅僅是一個電競游戲這么簡單了,它還帶給了我們無數的歡樂。

問君能有幾多愁,輔助閃現搶人頭;問君能有幾多愁,卡牌千里送人頭。問君能有幾多愁,皇子開大關隊友;清明時節雨紛紛 , 各種隊友各種坑。別人笑我不買眼 , 我笑別人浪費錢;孤帆遠影碧空盡 , 草叢驚現蠻易信 。相見時難別亦難,碰見趙信菊花殘;我自橫刀向天笑 , 剁人只需用三刀。苦練盲僧千百次 , 盲目對戰 N 多次;戰輸不下五十次 , 砸得鼠標要出事;舉杯邀明月 , 草叢遇蓋倫。

前幾天寫了一篇關于吃雞游戲的分析用 Python 分析了 1w 場吃雞數據,原來吃雞要這么玩!幫助小胖提升了吃雞率。鑒于 " 二百斤靈魂 " 小胖舍友不僅癡迷于吃雞類游戲,還非常喜歡 LOL,所以為了幫助他每天盡快拿到首勝,爬取并分析了 1982 余場 LOL 數據。非常神奇的是,在開局之前能夠高概率的預測本局的勝負!讓你提前做好心理準備。

假設

假設沒有王者等大神代玩小號

假設沒有代練

假設沒有因為半途被媳婦抓到而掛機的行為

游戲對戰數據獲取

國服:騰訊游戲平臺非官方 API —— http://www.games-cube.com/

外服:Riot 開發者平臺 API —— https://developer.riotgames.com/

連接數據庫:

import ? numpy ? as ? np

import ? pymysql, ? random, ? json

def ? connect_db ( database ) :

try:

conn ? = ? pymysql.connect ( host='localhost', ? port=3306, ? user='root', ? password='zandaoguang', ? db=database, ? charset='utf8' )

return ? conn

except:

print ? ( 'Exception: ? MySQL ? Connection' )

return ? None

分析和訓練數據

利用神經網絡(neural_network)、隨機森林(random_forest)和支持向量機(support_vector)等若干智能算法進行訓練和回歸,最終進行比較效果。

下面為神經網絡部分代碼:

from ? __future__ ? import ? print_function

import ? numpy ? as ? np

#np.random.seed ( 1337 ) ?? # ? for ? reproducibility

from ? keras.datasets ? import ? mnist

from ? keras.models ? import ? Sequential, ? load_model

from ? keras.layers ? import ? Dense, ? Dropout, ? Activation, ? Flatten

from ? keras.layers ? import ? Convolution2D, ? MaxPooling2D

from ? keras.utils ? import ? np_utils

from ? keras ? import ? backend ? as ? K

from ? keras.optimizers ? import ? SGD, ? Adam, ? RMSprop

import ? gzip

import ? sys

from ? six.moves ? import ? cPickle

from ? fetcher ? import ? *

batch_size ? = ? 256

nb_classes ? = ? 2

nb_epoch ? = ? 100

champion_dict ? = ? fetch_champion_dict ( "champion136.json" )

champion_num ? = ? len ( champion_dict )

X_train ? = ? X_train.astype ( 'int8' )

X_test ? = ? X_test.astype ( 'int8' )

print ( 'X_train ? shape:', ? X_train.shape )

print ( X_train.shape [ 0 ] , ? 'train ? samples' )

print ( X_test.shape [ 0 ] , ? 'test ? samples' )

Y_train ? = ? np_utils.to_categorical ( y_train, ? nb_classes )

Y_test ? = ? np_utils.to_categorical ( y_test, ? nb_classes )

model ? = ? Sequential ( )

model.add ( Dense ( 1500, ? input_dim ? = ? champion_num, ? init='uniform' ) )

model.add ( Activation ( 'sigmoid' ) )

model.add ( Dense ( 2 ) )

model.add ( Activation ( 'softmax' ) )

model.summary ( )

model.compile ( loss='categorical_crossentropy',

optimizer=RMSprop ( ) ,

metrics= [ 'accuracy' ] )

history ? = ? model.fit ( X_train, ? Y_train,

batch_size=batch_size, ? nb_epoch=nb_epoch,

verbose=1, ? validation_data= ( X_test, ? Y_test ) )

score ? = ? model.evaluate ( X_test, ? Y_test, ? verbose=0 )

print ( 'Test ? score:', ? score [ 0 ] )

print ( 'Test ? accuracy:', ? score [ 1 ] )

隨機森林代碼:

from ? sklearn.ensemble ? import ? RandomForestClassifier

from ? sklearn.externals ? import ? joblib

from ? fetcher ? import ? *

champion_dict ? = ? fetch_champion_dict ( "champion136.json" )

champion_num ? = ? len ( champion_dict )

X_train, ? y_train, ? X_test, ? y_test ? = ? fetch_one_side_riot ( '12', ? 'MATCHED_GAME', ? 'KING_PORO', ? 'KINGPORO', ? ( '1492660800000', ? '1493740800000' ) , ? champion_dict )

clf ? = ? RandomForestClassifier ( n_estimators=500, ? n_jobs=2 )

clf.fit ( X_train, ? y_train )

train_score ? = ? clf.score ( X_train, ? y_train )

print ? ( "Train ? Score ? = ? "+str ( train_score ) )

test_score ? = ? clf.score ( X_test, ? y_test )

print ? ( "Test ? Score ? = ? "+str ( test_score ) )

支持向量機代碼:

from ? sklearn.externals ? import ? joblib

from ? sklearn ? import ? svm

from ? fetcher ? import ? *

champion_dict ? = ? fetch_champion_dict ( "champion136.json" )

champion_num ? = ? len ( champion_dict )

X_train, ? y_train, ? X_test, ? y_test ? = ? fetch_one_side_riot ( '12', ? 'MATCHED_GAME', ? 'ARAM_UNRANKED_5x5', ? 'ARAM', ? ( '1492660800000', ? '1493740800000' ) , ? champion_dict )

clf ? = ? svm.SVC ( )

clf.fit ( X_train, ? y_train )

train_score ? = ? clf.score ( X_train, ? y_train )

print ? ( "Train ? Score ? = ? "+str ( train_score ) )

test_score ? = ? clf.score ( X_test, ? y_test )

print ? ( "Test ? Score ? = ? "+str ( test_score ) )

游戲對戰勝負預測

根據雙方英雄陣容,預測獲勝方的準確率(%)

作者注:由于阿廣近期沒有玩英雄聯盟,所以分析的數據為 2017 年的游戲數據。

只根據本方英雄陣容,預測本方能否獲勝的準確率(%)

期望研究的問題

LOL 中游戲勝利是否與能性別有關?

LOL 的勝率是否和每天的時間段有關系?

在女朋友阻止自己玩游戲的情況下,LOL 的勝率下降多少?如何解決?

注:由于數據量太小,以后能收集到更多的數據,是希望可以對上面以及更多的方向進行研究。

結論

LOL 取得最后勝利的三個重要因素為:團隊陣容、團隊水平,配合默契程度。

合理地分配 BUFF 也是游戲勝利的必要因素。

打游戲的心態也是游戲勝利一個不可或缺的條件。

寫在最后

雖然我們通過機器學習算法可以預測這把的輸贏,但是這畢竟不是我們最后的結果。玩英雄聯盟和愛情類似,明明知道是我們不可能,卻堅持去追求,這正是愛的美麗。也許沒有什么結果,可那過程本身的美麗便足夠用一生去品味。

我有一個兄弟,沉迷這個游戲耗費了數年光陰,至今二十好幾還流連網吧不返,家人反目。當然游戲本身是沒有錯的,我也不是責怪游戲,它本質不過是娛樂,從古至今皆有之,只是形式一直在變化,越來越吸引人。明知道每按一次鍵盤便使自己墮落到更深的深淵,但卻無法阻止雙手伴隨激動的情緒抽動,可悲的人。

極度沉迷游戲的人啊,把你有限的生命留在無限的游戲里吧,那你的靈魂到離開那一刻都是充滿成就的。即使后來新聞報道中會出現一個猝死在網吧被人當成笑話嘲笑的懦夫!

本文為作者投稿,版權歸作者所有。

作者簡介:阿廣,本文首發于個人公眾號「視學算法」。

「視學算法」是專注于大數據、人工智能和算法的學習平臺,也是一個保送中科院軟件研究所直博生的自留地。人生苦短,我愿做您最忠實的技術支持伙伴!一起用代碼改變世界!

推薦閱讀:

薦號

區塊鏈大本營,是區塊鏈開發者的基地,從這里出發,讓區塊鏈回歸技術與應用的本質!

點擊 " 閱讀原文 ",打開 APP 閱讀更順暢!

https://www.zydui.com/af15dVG8CDQ9VAF4F.html
>

相关文章:

  • Pytorch中的contiguous理解
  • 英雄聯盟陣營
  • python英雄對戰代碼_用 Python 分析了 1982 場英雄聯盟數據,開局前預測游戲對局勝負!...
  • 兩個嵌套for循環的執行順序
  • C# for循環的執行順序
  • C語言for循環語句的執行順序
  • Python編程PTA題解——字符轉換,提取
  • C練習記錄8——數字字符轉換成相對應的數值
  • 上古卷軸5python_如何評價游戲《上古卷軸5:天際》大型擴展MOD「突破天際」?...
  • 后羿 12 ‖ 對箭
  • 街霸對決最新服務器機柜銷售,街霸對決終于定檔,下個月就可以玩到,這次希望能抽到春麗!...
  • 暴雪風云錄·淺談暴雪的創業歷程
  • python獲取命令行參數 flags_命令行參數--tf.app.flags和python argparse
  • 機器中的幽靈:人工智能在金融市場的影響、風險及監管
  • 什么已配置?為什么在Mac上運行?
  • mdnsresponder_什么是mDNSResponder,為什么它可以在Mac上運行?
  • 趕集網入車行,縱向垂直看好市場
  • visual studio2019團隊資源管理器的使用
  • 被塵封的故事技能點bug_魔獸世界:獵人(射擊)新天賦與技能實測
  • 蘋果黑解升級后顯示無服務器,果粉怒了!升級iOS 12.1.3后,這款iPhone徹底無服務了...
  • 安裝C4D報錯 找不到libmmd.dll文件
  • c4d python_【C4D開發】C4D中的python生成器
  • C4DR19安裝的時候進度條卡到一半就不動了|折騰了4小時-【已解決】
  • lol8月21號服務器維護,《LOL》8月21日測試服 更新維護內容
  • caxa齒輪零件圖_齒輪油泵-各零件圖
  • 各職業藍色套裝屬性和掉落地點
  • 焦慮和迷茫的2020年!
  • 經典的網絡爆笑語錄
  • 關于程序員的59條搞笑但卻真實無比的編程語錄
  • 2019年5月22日 AY 程序員調侃語錄