본문 바로가기
프로젝트/진행중

Project_LOL / 게임 승패 예측 (3)

by 가장따뜻한로봇 2023. 6. 1.

https://warmbot.tistory.com/15

 

Project_LOL / 게임 승패 예측 (2)

https://warmbot.tistory.com/14 Project_LOL / 게임 승패 예측 (1) 리그 오브 레전드(이하 롤)라는 게임은 여러가지 모드가 있는데, 그 중 남들과 경쟁하는 '랭크' 게임 중 솔로 랭크에서의 승률을 예측해 보고

warmbot.tistory.com

 

승패 예측의 정확도를 올릴 다른 방법이 필요.

 

게임 도중 승패에 영향이 있을 만한 것을 이용해봄

=> KDA(킬,데스,어시스트), 딜량, 힐량, 획득한 오브젝트 수, 골드(미니언 + 정글몹), 경기시간, 시야점수 등

 

# 2-3. 추가적인 데이터를 이용하여 정확도 올리기.

data = pd.DataFrame(columns=['assists','championId','damageDealtToBuildings','damageDealtToObjectives','damageDealtToTurrets','deaths',
                             'goldEarned','kills','neutralMinionsKilled','summoner1Id','summoner2Id','totalAllyJungleMinionsKilled',
                             'totalDamageDealt','totalHeal','totalTimeSpentDead','visionScore','primaryStyle','subStyle','teamPosition']*10 +['timePlayed','win'])
# matchdata 에서 KDA(킬,데스,어시스트), 딜량, 힐량, 획득한 오브젝트 수,
# 골드(미니언 + 정글몹), 경기시간, 시야점수 에 관련된 컬럼을 추가
re_play = False
for i in tqdm(matchdata.columns):
    tmp = []
    for j in matchdata[i]:
        if lbe.transform([j['teamPosition']])[0] == 0:
            re_play = True
        for k in ['assists','championId','damageDealtToBuildings','damageDealtToObjectives','damageDealtToTurrets','deaths',
                             'goldEarned','kills','neutralMinionsKilled','summoner1Id','summoner2Id','totalAllyJungleMinionsKilled',
                             'totalDamageDealt','totalHeal','totalTimeSpentDead','visionScore']:
            tmp.extend([j[k]])
        tmp.extend([j['perks']['styles'][0]['selections'][0]['perk'],j['perks']['styles'][1]['selections'][0]['perk'],lbe.transform([j['teamPosition']])[0]])
    tmp.extend([j['timePlayed'],j['win']])
    if re_play == False:
        data.loc[i] = tmp
    else:
        re_play = False

 

rf = RandomForestClassifier()
y = data['win']
x = data.drop(columns='win')
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=321)

rf.fit(x_train,y_train)
pre = rf.predict(x_test)

accuracy_score(y_test,pre)

 

게임 결과창에서 알 수 있는 데이터를 가지고 분석을 하니 대략 96.9% 정확도가 나옴.

 

게임 후 알수 있는 결과를 학습하여

게임 시작 시 알 수 있는 정보를 가지고 승패 예측을 하면 될 것 같다는 생각이 듬. 

 

To be continued...

'프로젝트 > 진행중' 카테고리의 다른 글

Project_LOL / 게임 승패 예측 (2)  (1) 2023.06.01
Project_LOL / 게임 승패 예측 (1)  (0) 2023.06.01