Edited at

League of Legendsの試合データから勝敗を判別する機械学習①

More than 1 year has passed since last update.


はじめに

機械学習の勉強をしてみよう。と思い身近な何かをデータで用いたいと考え、データ量が豊富で、かつAPIでやれることが豊富なLeague of Legendsというゲーム(公式サイト)を題材にしてみようと考えました。

内容としては、試合の戦績データから一部を抽出し、それらをデータセットとして用意し、戦績データから勝敗を見分けるというものです。

また、本記事では


使うもの

本ゲームの運営が用意しているものに、RiotAIPというAPIがあるのですが、それを使いやすくしたriotwatcherというモジュールがあるため、そちらを使います。GitHub


戦績データの確認

まずは、戦績データにどのような情報が入っているかを確認してみます。

事前にriotwatcherのインストール

pip install riotwatcher

戦績データの取得は

from riotwatcher import RiotWatcher

watcher = RiotWatcher("{APIキー}")

region = "jp1" #サーバーの選択 日本鯖はjp1
name = "{サモナーネーム}" #サモナーネームの入力

summoner = watcher.summoner.by_name(region, name)
#プレイヤーデータの取得
ranked_state = watcher.league.positions_by_summoner(region, summoner["id"])
#プレイヤーのランクデータ
recentmatchlists = watcher.match.matchlist_by_account(region,summoner["accountId"])
#直近20試合のデータのリストを取得
matches = recentmatchlists['matches']

match_data = watcher.match.by_id(region, matches[0]['gameId'])
print(match_data)

としました。

まず、モジュールを読み込んだあと

watcher = RiotWatcher("{APIキー}")

でAPIキーの 入力を行います。このAPIキーはこちらで取得することができます。

次に

region = "jp1" #サーバーの選択 日本鯖はjp1

name = "{サモナーネーム}" #サモナーネームの入力

summoner = watcher.summoner.by_name(region, name)
#プレイヤーデータの取得
ranked_state = watcher.league.positions_by_summoner(region, summoner["id"])
#プレイヤーのランクデータ
recentmatchlists = watcher.match.matchlist_by_account(region,summoner["accountId"])
#直近20試合のデータのリストを取得
matches = recentmatchlists['matches']

match_data = watcher.match.by_id(region, matches[0]['gameId'])
print(match_data)

では、最初に調べたいプレイヤーのサモナーネーム、またそのプレイヤーの選択しているサーバーを設定します。

また、試合データを見る際、直近20試合のデータをリストで取得するため、match_dataに代入するときは、インデックスは0にしました。理由としては、今回は戦績データの中身がどのようになっているかの確認のため、1試合分だけ欲しかったためです。これで最新の試合データを取得できます。

これを出力すると、最新の試合データがみれるのですが、あまりにも情報量が多く、1試合なのにも関わらず文字数にすると約3万文字にもなりましたので、一部分を画像で表示すると

loldata.png

となります


まとめ

これで試合データの中身を確認することが出来ました。

次はこの中から一部分のデータを取得し、さらにそれを複数試合のデータを取得したいと思います。

プログラミング初心者の拙い文章ではありますが、最後まで見ていただきありがとうございました。

League of League of Legendsの試合データから勝敗を判別する機械学習②はこちら