본문으로 건너뛰기
데이터 분석 · 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강. 지도학습 기초: 게임 승패 또는 점수 예측 문제 만들기 미완료 상태