#目的
機械学習について勉強する機会があり、自分で何かやってみたいとテーマを探していたところ、
League of Legendsの試合データから勝敗を判別する機械学習①
(https://qiita.com/hyo_07/items/f106efbde82aeb47c8a0)
という記事を見つけAPIで多数のデータを自分で扱えるということでLOLをテーマとすることにしました。
#データ入手
##準備
Pythonでデータを取得する場合RiotWatcherというモジュールから取得することができます。
また、データ取得にはRiot Games APIのページ(https://developer.riotgames.com)
からAPIキーを取得する必要があります。
モジュールのインストール
pip install riotwatcher
RiotWathcerにAPIキーを登録します。
from riotwatcher import RiotWatcher, ApiError
watcher = RiotWatcher('APIキー')
##サモナーのID情報
my_region = 'jp1'
summoner = 'riyokuhi'
me = watcher.summoner.by_name(my_region, summoner)
print(me)
{'id': 'NQAyxwwyHGEWmKs8ta9I0yy-GIM4KdjjMw_GAIcqEDbBYA', 'accountId': 'nZjfvmzwwE4NjtyLG42CZtfubERameu6owhNIgNWZgs3oSo', 'puuid': '4fS6lZS6nQQi9jM-KVCSmcJ7sVN86jQ3LW8dXoFyq4JYh_FFFBqOWvymEjlV59DU7zUN3TDR34ZNMA', 'name': 'riyokuhi', 'profileIconId': 4352, 'revisionDate': 1571626185000, 'summonerLevel': 168}
サモナー関する複数の文字列が表示されます。試合データ等の出力にはサモナーネームでなく'id'や'accountId'を使います。
##サモナーのマッチ情報
recentmatchlists = watcher.match.matchlist_by_account(my_region,me['accountId'])
matches = recentmatchlists['matches']
print(matches)
[{'platformId': 'JP1', 'gameId': 210876606, 'champion': 59, 'queue': 430, 'season': 13, 'timestamp': 1571624644160, 'role': 'NONE', 'lane': 'JUNGLE'}, {'platformId': 'JP1', 'gameId': 210803138, 'champion': 61, 'queue': 430, 'season': 13, 'timestamp': 1571547151628, 'role': 'SOLO', 'lane': 'MID'}, {'platformId': 'JP1', 'gameId': 210801654, 'champion': 22, 'queue': 450, 'season': 13, 'timestamp': 1571542299129, 'role': 'DUO_SUPPORT', 'lane': 'NONE'}, {'platformId': 'JP1', 'gameId': 210631345, 'champion': 412, 'queue': 430, 'season': 13, 'timestamp': 1571450184490, 'role':
以下省略
プレイヤーの過去100戦までのデータが表示されます。'gameId'を使うことで各ゲームの細かいデータを出力できます。
##ゲームデータ
match_detailx = []
match_detailx.append(watcher.match.by_id(my_region,210876606))
print(match_detailx)
1ゲームのデータが出力されますが膨大なので一部のみ紹介します。
#ゲームの種類
print(match_detailx[0]['queueId'])
#パッチバージョン
print(match_detailx[0]['gameVersion'])
430 9.20.292.2452
430はノーマルブラインド、420がランクソロキューのようです。パッチは9.20
#チーム全体情報
print(match_detailx[0]['teams'][0])
{'teamId': 100, 'win': 'Fail', 'firstBlood': True, 'firstTower': True, 'firstInhibitor': False, 'firstBaron': False, 'firstDragon': False, 'firstRiftHerald': False, 'towerKills': 3, 'inhibitorKills': 0, 'baronKills': 0, 'dragonKills': 0, 'vilemawKills': 0, 'riftHeraldKills': 0, 'dominionVictoryScore': 0, 'bans': []}
片方のチームの取得オブジェクト情報
#KDA
print(match_detailx[0]["participants"][0]['stats']['kills'])
print(match_detailx[0]["participants"][0]['stats']['deaths'])
print(match_detailx[0]["participants"][0]['stats']['assists'])
3 7 1
個人データは["participants"][0]の0を0~9に変えることで10人分のデータが見れます。
#おわりに
各ゲーム内の細かいデータまで手に入るのでこれらのデータを使ってなにか機械学習の練習をしたいです。