Help us understand the problem. What is going on with this article?

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の試合データから勝敗を判別する機械学習②はこちら

hyo_07
大学院にてブロックチェーンの研究を行っています
https://github.com/hyo07
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away