#はじめに
機械学習の勉強をしてみよう。と思い身近な何かをデータで用いたいと考え、データ量が豊富で、かつ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万文字にもなりましたので、一部分を画像で表示すると
となります
#まとめ
これで試合データの中身を確認することが出来ました。
次はこの中から一部分のデータを取得し、さらにそれを複数試合のデータを取得したいと思います。
プログラミング初心者の拙い文章ではありますが、最後まで見ていただきありがとうございました。
League of League of Legendsの試合データから勝敗を判別する機械学習②はこちら