본문으로 건너뛰기
데이터 분석 · AI 기초집LESSON 18

지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기

난이도초급
예상 시간35분
선수지식이전 강의

18강. 지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기

1. 이번 강의에서 해결할 문제​

10행 정도의 예제로 모델을 학습하면 우연에 크게 흔들리고 범주형 문자열을 그대로 넣을 수 없습니다. 충분한 가상 표본과 명시적 전처리가 필요합니다.

2. 학습 목표​

3. 핵심 개념​

승패 0/1 예측은 분류, 연속 점수 예측은 회귀입니다. 이 강의는 매치 시작 시점의 승패 분류를 선택하고 game_mode와 character를 사용합니다. 최종 score와 최종 play_minutes는 예측 시점에 아직 알 수 없으므로 모델 입력에서 제외합니다. 가상 생성 규칙은 실제 사용자 행동을 대표하지 않으며 파이프라인 학습용입니다.

4. 단계별 실습​

1. 예제 파일 작성​

실행 환경: 코드 편집기

실행 위치: C:\dev\game-data-lab

실행 전 확인: 기존 파일이 있으면 내용을 덮어쓰지 말고 Git diff로 이번 강의 변경 범위를 확인합니다. 실제 개인정보·API Key·토큰은 사용하지 않습니다.

대상 파일: src/generate_model_data.py

src/generate_model_data.py
from pathlib import Path
import csv
import random
from datetime import date, timedelta

rng = random.Random(42)
characters = ["Mage", "Knight", "Rogue"]
modes = ["casual", "ranked"]
rows = []
for i in range(240):
mode = rng.choice(modes)
character = rng.choice(characters)
minutes = rng.randint(8, 45)
skill = rng.random()
score = round(500 + minutes * 16 + skill * 650 + (80 if mode == "ranked" else 0))
win_probability = min(0.9, max(0.1, 0.2 + skill * 0.55 + (score - 1000) / 2500))
rows.append([f"M{i+1:04}", f"V{i%60+1:03}", mode, minutes, score, int(rng.random() < win_probability), character, date(2026, 2, 1) + timedelta(days=i % 28)])

# 품질 처리 실습을 위한 의도적인 가상 문제 3개
rows[5][4] = "" # score 결측
rows[10][3] = 360 # play_minutes 범위 위반
rows.append(rows[0].copy()) # session_id 중복

Path("data/raw").mkdir(parents=True, exist_ok=True)
with Path("data/raw/game_sessions_model.csv").open("w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["session_id", "player_id", "game_mode", "play_minutes", "score", "win", "character", "match_date"])
writer.writerows(rows)
print("가상 행 수:", len(rows))

2. 실행과 결과 확인​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-data-lab

실행 전 확인: Python 코드는 프로젝트의 .venv 인터프리터를 사용하고 입력 파일 경로가 존재하는지 확인합니다.

대상: src/generate_model_data.py과 이 강의가 만드는 출력

Windows PowerShell
Set-Location C:\dev\game-data-lab
.\.venv\Scripts\python.exe .\src\generate_model_data.py
Get-Content .\data\raw\game_sessions_model.csv -TotalCount 4

예상 결과: 고정 seed로 만든 240행과 품질 점검용 중복 1행을 합친 241행 가상 CSV가 생성되고 헤더와 첫 세 행이 출력됩니다.

5. 분석 또는 모델이 동작하는 이유​

고정된 의사난수 seed는 같은 코드에서 같은 학습 데이터를 만들게 합니다. 생성식의 skill은 레이블 생성에만 쓰고 CSV 특성에는 저장하지 않아 관측되지 않는 요인을 흉내 냅니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2‘범주 문자열을 숫자 순서로 임의 변환하기’ 상태에 관한 “지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

18강. 지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기 미완료 상태