https://github.com/bosl95/win-rate-prediction-program
Predict win rate
https://github.com/bosl95/win-rate-prediction-program
kaggle-dataset pandas riot-api scikitlearn-machine-learning svm-model
Last synced: about 2 months ago
JSON representation
Predict win rate
- Host: GitHub
- URL: https://github.com/bosl95/win-rate-prediction-program
- Owner: bosl95
- Created: 2020-07-14T12:05:08.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2020-08-28T13:46:52.000Z (almost 6 years ago)
- Last Synced: 2025-04-14T10:19:52.561Z (about 1 year ago)
- Topics: kaggle-dataset, pandas, riot-api, scikitlearn-machine-learning, svm-model
- Language: Python
- Homepage:
- Size: 2.63 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
## Win rate prediction program
- Pandas
- scikit-learn : svm, metrics
- pickle
## Detail
- [league of legends](https://kr.leagueoflegends.com/ko-kr/) 게임의 승률을 예측하는 프로그램
- 닉네임을 입력 받고, 해당 유저의 최근 경기 기록을 가져와 그 경기 데이터를 이용한 승률을 예측한다.
> #### 1. 학습할 데이터와 학습 모델 만들기
- kaggle에 등록된 challenger 랭크의 경기 데이터를 가져온다. [(출처)](https://www.kaggle.com/gyejr95/league-of-legends-challenger-ranked-games2020)
- 하나의 행마다 매 경기의 데이터들이 들어있는데, red 팀과 blue 팀의 데이터가 같이 들어있으므로 red팀과 blue 팀 데이터를 나눈 다음 하나의 학습 데이터로 만들어준다. (같은 위치에 놓여야할 blue, red 데이터가 컬럼명이 살짝 달라서 컬럼명을 바꿔서 다시 합치는데 시간이 오래 걸렸다.)
# blue, red 데이터를 하나의 데이터 프레임으로 합치기. (같은 내용인데 컬럼명만 다르기 때문에 데이터 가공이 필요하다.)
new_cols = {x:y for x, y in zip(red_data.columns, blue_data.columns)}
train_data = blue_data.append(red_data.rename(columns=new_cols), ignore_index=True)
train_label = blue_win.append(red_win, ignore_index=True)
pickle 모듈을 통해 학습 데이터 모델을 저장해 불필요한 학습 시간을 단축시킨다.
> #### 2. 경기 데이터 가져오기 (test data)
- 닉네임을 입력받은 다음 Liot API를 이용해 account ID를 우선적으로 알아낸다.
- 찾아낸 account ID를 통해 최근 전적을 검색한다.
- 이때 최근 전적 중에서 솔로 혹은 듀오 랭크로만 데이터이어야 하고, 최근 전적을 나타내는 데이터에 유저의 game ID와 champion number를 가져온다. ( 솔로 랭크는 10명의 게임 참가자 중 중복되는 챔피언(캐릭터)를 가질 수 없으므로, 경기 데이터마다 챔피언을 통해 검색하는 유저의 정보를 찾는다.)
- 그 game ID를 통해 경기 데이터에 접근하고, champion number를 통해 검색한 유저가 해당하는 팀(red or blue)을 찾을 수 있다.
- 검열된 경기데이터에서 테스트하는데 필요한 정보를 뽑아 딕셔너리 타입으로 저장해준다.
~~처음엔 defaultdict(float)로 만들어서 DataFrame을 생성해주려고 했으나 에러가 계속 떴다...~~
pd.DataFrame(test_Alldata[i], index=[0])
# dictionary 타입의 테스트 데이터를 DataFrame으로 만들어주는 모드
# 각 딕셔너리의 값이 리스트 형태가 아닌 단일 형태의 값인 경우 DataFrame으로 변환 시 에러가 발생한다. 따라서 index = [0]으로 지정해주거나 값을 리스트 형태로 만들어준다.