用 Python 詳解《英雄聯盟》遊戲取勝的重要因素

csdn 發佈 2020-08-22T12:58:59+00:00

《英雄聯盟》於2009年底發行,是一款免費的多人在線戰鬥競技場視頻遊戲,由 Riot Games 公司開發,這款遊戲在早期就產生了廣泛的競爭場景,2011年的第一屆世界冠軍創造了約160萬觀眾。

作者 | deephub

責編 | 王曉曼

出品 | CSDN博客

介紹

在過去的幾年裡,電子競技社區發展迅速,曾經只是休閒娛樂的電子競技產業,到2022年有望創造18億美元的收入。

雖然在這個生態系統中有很多電子遊戲,但很少有遊戲像《英雄聯盟》那樣成為社區的主要元素,該遊戲在2019年世界錦標賽期間吸引了超過1億的獨立觀眾。

《英雄聯盟》於2009年底發行,是一款免費的多人在線戰鬥競技場(MOBA)視頻遊戲,由 Riot Games 公司開發,這款遊戲在早期就產生了廣泛的競爭場景,2011年的第一屆世界冠軍創造了約160萬觀眾。

隨著 Riot 開始了解如何改變才能使遊戲更具競爭性和趣味性,這款遊戲在受歡迎程度和可玩性方面都有所提高。

在《英雄聯盟》的比賽中,兩隊各有五名玩家,每一隊都控制著一個獨特的角色或「冠軍」,當其中一隊位於其基地深處的 Nexus 被摧毀時,比賽就會結束。

在這個過程中,一個團隊可以實現很多目標,比如摧毀炮塔,殺死中立的怪物,比如龍和男爵,以獲得整個團隊的增益,等等。

有些目標,如摧毀至少五個炮塔和一個兵營,是贏得遊戲所必需的,而其他目標,如獲得第一滴血,是有益的,但不是必須的。

通過這個項目,我想更好的了解這些目標中哪一個是贏得英雄聯盟遊戲最重要的。就此而言,我提出的問題如下:

英雄聯盟最重要的獲勝條件是什麼?

收集數據

我首先申請了一個使用 Riot Developer Portal 的應用程式,在我的應用程式被接受後,我瀏覽了 api 列表,以了解我可以請求的數據類型。

不幸的是,沒有一種直接的方法可以從一個區域中取出最後X個排名的匹配項,所以我必須找到一種方法來解決這個問題。

我的解決方案是使用召喚者名稱列表(用戶名)來為每個玩家生成最近的比賽列表。通過 Python 包 Riot-Watcher 的調用,獲取了差不多10000行的數據與五個地區最新聯賽比賽的前100名玩家的數據。

乍一看,DataFrame 看起來是這樣的:

在前7列中,0表示「False」,1表示「True」,而在後面的列中,單元格中編碼的數據表示事件發生的次數。每行都包含了一場排位比賽中的一支隊伍的統計數據。例如,在第一排,沒有獲得任何目標的團隊首先輸掉了整個比賽。

探索性數據分析熱圖和主成分分析

首先,我發現91%的獲勝團隊摧毀了第一個兵營,80%殺死了第一個男爵,70%摧毀了第一個塔,63%殺死了第一條龍,59%的獲勝團隊以第一滴血開始遊戲。

現在看來,最重要的獲勝條件是摧毀第一個兵營,這是有意義的,因為摧毀一條線路的兵營會給他們的基地帶來壓力,並允許對方擁有更多的地圖控制。

接下來,我可視化了數據集中各列之間的相關性:

我還為我的數據中所代表的每個獨立地區找到了相同的關聯熱圖,以比較不同地區之間的關聯,希望能注意到遊戲風格的一些差異。

一般來說,相關矩陣看起來非常相似。一個可能的原因是,我的數據包含了每個地區最好的玩家的比賽,其中許多人是職業選手。

因此,由於良好的遊戲實踐在競爭性社區中是一致的,所以我的數據中所代表的匹配涉及到那些在每一款遊戲中頂級玩家,而這些玩家相對於每個區域中排名較低的玩家來說是相似的。

我現在很想知道數據中的方差是如何用較少的特徵來解釋的,而不是我用來預測遊戲結果的10個特徵。在這種程度上,我進行了主成分分析,以了解我可以將數據簡化成多少特徵,同時保留大部分的方差:

十個預測列中超過80%的方差可以用一半的特徵量來解釋。這確實很有趣,通過將每個組件與原始數據集的列關聯起來,我希望了解在解釋數據的差異時哪些特性是最重要的,這可以幫助我弄清楚哪些列對一個團隊是否會獲勝最關鍵。

用於生成上述熱圖的組件來自一個包含六個PCA對象,因為我希望這些組件能夠解釋數據中超過90%的差異。看來推塔,摧毀兵營,以及一個團隊是否摧毀了第一個兵營在確定方差最重要的特徵數據,第一個組件解釋40%的方差和三個上述列加權最該組件。

重申一下我在這一點上的領悟:

從我的關聯熱圖來看,無論一個團隊是否摧毀了第一個兵營,一個團隊推掉了多少塔,以及一個團隊摧毀了多少兵營都與獲勝有最高的相關性。

從我的 PCA 分析來看,團隊是否摧毀了第一個兵營,團隊摧毀了多少塔,以及團隊摧毀了多少兵營在解釋數據中的差異方面發揮了最大的作用。

使用邏輯回歸進行數據建模

我使用了 Logistic 回歸模型來理解《英雄聯盟》排名比賽的獲勝條件。我的過程是首先將我的數據分割成一組特徵和一組目標,其中我的特徵是除 『win』 和 『region』列 之外的所有列,我的目標是『win』列。

然後我將我的數據分解為一個列集和一個測試集,通過 Logistic 回歸模型進行運行,並檢查分類報告和混淆矩陣,確保有較強的預測能力。當邏輯回歸模型在整個數據集上運行時,模型的精度和召回率分別為。86和。85。

從這裡開始,我對只包含一個區域的數據子集進行邏輯回歸,比如只在 NA、BR 等中進行的匹配,並在一個 Pandas 數據模型中記錄模型的係數。這個數據圖被可視化了,所以我可以比較不同的區域:

回歸係數描述預測變量和目標變量之間的關係。例如,當我們看上面的一血預測變量時,第一個拿到一血的隊伍是對比賽結果的適度預測,因為第一個拿一血的隊伍更有可能獲勝。

另一方面,峽谷先驅的擊殺實際上是在相反的方向上相關的(除了EUNE),並且獲得更多峽谷先驅擊殺的隊伍更有可能輸掉。

通過這個分析過程,我了解了哪些專欄更能預測勝利,幫助我回答了關於《英雄聯盟》中獲勝條件的問題。

結論

通過我的項目,我得出以下結論:

根據我的邏輯回歸模型,按照最大到最小的順序,第一個兵營,第一個塔,塔摧毀是數據集中最重要的獲勝條件(這是推塔遊戲)。

根據我的關聯熱圖,從最大到最小,塔摧毀,第一個兵營,兵營摧毀數是數據集中最重要的獲勝條件(這是推塔遊戲)。

雖然獲得第一個 baron 的 NA 和 EUW 團隊更有可能獲勝,但隨著殺死的baron 數量的增加,這些地區的團隊更有可能失敗。

與其它地區相比,在 NA 地區的團隊更有可能贏得第一隻龍,這一事實或許表明在 NA 地區的遊戲更傾向於龍的愛好者和圍繞龍的戰鬥滾雪球式的遊戲(當一個團隊在遊戲中擴大一個小優勢以贏得勝利)。

KR遊戲並沒有受到一個特性的不均衡影響。這可能表明KR的隊員比其它地區的隊員更了解如何在劣勢中有戲,這促使團隊比其它地區的團隊更經常地贏得組合目標。

本文原始碼:https://github.com/ankushbharadwaj/league-of-legends-win-conditions

譯者註:這個模型沒有使用 「region」列作為訓練參數使用國服數據訓練可能是個敗筆,畢竟處理祖安的玩家數據可能需要更多的自然語言處理技術提取聊天的特徵,這才是祖安人勝利的關鍵!

聲明:本文為 CSDN 博主「deephub」的翻譯文章,版權歸作者所有。

原文:https://blog.csdn.net/m0_46510245/article/details/108116199

關鍵字: