1. riyokuhi

    Posted

    riyokuhi
Changes in title
+League of Legends APIを使って機械学習をやってみる1
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,95 @@
+
+#目的
+
+機械学習について勉強する機会があり、自分で何かやってみたいとテーマを探していたところ、
+League of Legendsの試合データから勝敗を判別する機械学習①
+(https://qiita.com/hyo_07/items/f106efbde82aeb47c8a0)
+という記事を見つけAPIで多数のデータを自分で扱えるということでLOLをテーマとすることにしました。
+
+#データ入手
+##準備
+Pythonでデータを取得する場合RiotWatcherというモジュールから取得することができます。
+また、データ取得にはRiot Games APIのページ(https://developer.riotgames.com)
+からAPIキーを取得する必要があります。
+
+モジュールのインストール
+
+```python
+pip install riotwatcher
+```
+
+RiotWathcerにAPIキーを登録します。
+
+```python
+from riotwatcher import RiotWatcher, ApiError
+watcher = RiotWatcher('RGAPI-016e8de8-3def-43e6-b413-38a7fa213354')
+```
+
+##サモナーのID情報
+```python
+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'を使います。
+
+
+##サモナーのマッチ情報
+
+```python
+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'を使うことで各ゲームの細かいデータを出力できます。
+
+##ゲームデータ
+
+```python
+match_detailx = []
+match_detailx.append(watcher.match.by_id(my_region,210876606))
+print(match_detailx)
+```
+1ゲームのデータが出力されますが膨大なので一部のみ紹介します。
+
+```python
+#ゲームの種類
+print(match_detailx[0]['queueId'])
+#パッチバージョン
+print(match_detailx[0]['gameVersion'])
+```
+
+`430
+9.20.292.2452`
+430はノーマルブラインド、420がランクソロキューのようです。パッチは9.20
+
+```python
+#チーム全体情報
+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': []}`
+片方のチームの取得オブジェクト情報
+
+```python
+#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人分のデータが見れます。
+
+#おわりに
+各ゲーム内の細かいデータまで手に入るのでこれらのデータを使ってなにか機械学習の練習をしたいです。
+