Chapter 13: 프로젝트 완성하기¶
한 줄 요약: 기획한 프로젝트를 처음부터 끝까지 직접 만들고, 막히면 스스로 해결하며 완성하는 실전 경험!
🎯 이 장에서 배우는 것¶
- [ ] 전체 머신러닝 파이프라인을 독립적으로 구현할 수 있다
- [ ] 발생하는 오류를 스스로 해결할 수 있다
- [ ] 결과를 해석하고 개선점을 찾을 수 있다
- [ ] 프로젝트 과정을 문서화할 수 있다
💡 왜 이걸 배우나요?¶
지금까지 우리는 분류, 회귀, 군집, 텍스트 분석까지 다양한 머신러닝 기법을 배웠어. 하나씩 따라해봤고, 개념도 이해했지.
그런데 진짜 실력은 뭘까?
❌ "이 코드가 뭘 하는지 설명할 수 있어요"
⭕ "새로운 문제를 만나면 스스로 해결할 수 있어요"
이번 장은 보조 바퀴를 떼는 시간이야.
🚲 자전거 배우기 비유
지금까지: [선생님이 잡아줌] → [보조 바퀴 달고] → [천천히 따라감]
이번 장: [혼자서 타보기] → [넘어지면 일어나고] → [목적지 도착!]
실제 회사에서, 대회에서, 연구에서 하는 일이 바로 이거야. "아무도 정답을 안 알려주는 상황에서 스스로 완성하기"
막히면 어떡하냐고? 그래서 우리에게는 3가지 무기가 있어:
- 이전 챕터 - 언제든 돌아가서 참고
- AI 도구 - Claude, ChatGPT에게 질문
- 검색 - 에러 메시지 그대로 검색
이 장을 끝내면: "나도 혼자서 ML 프로젝트를 완성할 수 있구나!" 하는 자신감이 생겨.
📚 핵심 개념¶
개념 1: 독립적 프로젝트 수행¶
비유로 시작: 요리 학원에서 레시피 따라하기만 했다면, 이제 "손님이 뭘 원하는지 듣고, 재료 고르고, 요리하고, 맛보고, 담아내기"까지 혼자 해보는 거야.
정확히 말하면: 독립적 프로젝트 수행이란 문제 정의부터 데이터 준비, 모델 학습, 평가, 개선까지 전 과정을 스스로 결정하고 실행하는 것이야.
예를 들어: - 선생님: "타이타닉 생존 예측해봐, 이 컬럼 써" - 독립: "어떤 문제를 풀지? 어떤 데이터로? 어떤 방법으로?"
쉽게 말하면: 가이드 없이 처음부터 끝까지 내가 결정하고 만드는 것!
개념 2: 디버깅 마인드셋¶
비유로 시작: 게임에서 보스를 못 잡으면? "왜 죽었지? → 패턴 분석 → 다시 도전" 이 과정을 반복하잖아. 코딩도 똑같아.
정확히 말하면: 디버깅 마인드셋이란 에러를 "실패"가 아니라 "힌트"로 보고, 체계적으로 원인을 찾아 해결하는 사고방식이야.
예를 들어:
😰 잘못된 마인드셋:
"에러 났다... 나는 재능이 없나봐..."
😎 디버깅 마인드셋:
"에러 났다 → 뭐라고 하지? → 여기가 문제구나 → 수정!"
쉽게 말하면: 에러는 적이 아니라, 문제점을 알려주는 친절한 선생님!
🎮 에러 대응 레벨
Level 1: 에러 보고 당황 😱
Level 2: 에러 메시지 읽기 🤔
Level 3: 에러 위치 찾기 🔍
Level 4: 원인 파악하기 💡
Level 5: 해결하고 배우기 🎯 ← 목표!
개념 3: 반복적 개선 (Iteration)¶
비유로 시작: 처음 그린 그림이 완벽할 순 없어. 스케치 → 수정 → 채색 → 수정 → 완성. 이렇게 여러 번 다듬어 가는 거지.
정확히 말하면: 반복적 개선이란 한 번에 완벽을 추구하지 않고, "작동하는 버전"을 빠르게 만든 후 점진적으로 개선해 나가는 방법이야.
예를 들어:
Version 1: 일단 돌아가게 (정확도 60%)
↓
Version 2: 데이터 정리 (정확도 70%)
↓
Version 3: 모델 튜닝 (정확도 78%)
↓
Version 4: 피처 추가 (정확도 82%)
쉽게 말하면: 처음부터 완벽할 필요 없어. 일단 돌아가게 → 점점 좋게!
🔨 따라하기¶
🎪 이번 장의 특별한 진행 방식¶
이번 장은 다른 챕터와 달라. 스스로 만드는 것이 목표니까, 단계별 가이드만 제공하고 상세 코드는 네가 직접 작성하는 거야.
📋 프로젝트 진행 로드맵
┌─────────────────────────────────────────────────────────┐
│ Phase 1: 준비하기 (5분) │
│ ├── 문제 정의 확인 │
│ └── 데이터 준비 확인 │
├─────────────────────────────────────────────────────────┤
│ Phase 2: 기초 구축 (10분) │
│ ├── 데이터 로드 & 탐색 │
│ └── 기본 전처리 │
├─────────────────────────────────────────────────────────┤
│ Phase 3: 모델링 (10분) │
│ ├── 데이터 분할 │
│ ├── 모델 선택 & 학습 │
│ └── 예측 수행 │
├─────────────────────────────────────────────────────────┤
│ Phase 4: 평가 & 개선 (10분) │
│ ├── 성능 측정 │
│ ├── 결과 시각화 │
│ └── 개선 아이디어 도출 │
└─────────────────────────────────────────────────────────┘
Step 1: 프로젝트 선택하기¶
목표: 지난 챕터에서 기획한 프로젝트를 선택하고, 구체적으로 정의하기
먼저 어떤 프로젝트를 할지 정해야 해. 지난 챕터(Chapter 12)에서 기획한 게 있다면 그걸 쓰면 되고, 없다면 아래에서 골라봐.
📦 프로젝트 선택지
분류 프로젝트 - 옵션 A: 붓꽃(Iris) 품종 분류 - 초급 - 옵션 B: 와인 품질 등급 분류 - 중급 - 옵션 C: 고객 이탈 예측 - 중급
회귀 프로젝트 - 옵션 D: 보스턴 집값 예측 - 초급 - 옵션 E: 학생 성적 예측 - 중급 - 옵션 F: 자전거 대여량 예측 - 중급
군집 프로젝트 - 옵션 G: 고객 세분화 - 중급 - 옵션 H: 이미지 색상 군집화 - 중급
어떤 걸 선택해도 이 장의 과정은 동일하게 적용돼!
지금 할 것:
┌────────────────────────────────────────────────────────┐
│ 📝 프로젝트 정의서 작성 │
├────────────────────────────────────────────────────────┤
│ │
│ 1. 프로젝트 이름: _______________________ │
│ │
│ 2. 문제 유형: □ 분류 □ 회귀 □ 군집 │
│ │
│ 3. 예측/분석 대상: _______________________ │
│ (무엇을 예측하거나 분석할 것인가?) │
│ │
│ 4. 사용할 데이터: _______________________ │
│ (어디서 가져올 것인가?) │
│ │
│ 5. 성공 기준: _______________________ │
│ (어느 정도면 만족할 것인가?) │
│ │
└────────────────────────────────────────────────────────┘
예시 (와인 품질 분류 프로젝트):
1. 프로젝트 이름: 와인 품질 등급 분류기
2. 문제 유형: ☑ 분류
3. 예측 대상: 와인의 품질 등급 (good/bad)
4. 사용할 데이터: UCI Wine Quality Dataset
5. 성공 기준: 정확도 75% 이상
Step 2: 프로젝트 뼈대 세우기¶
목표: 빈 칸만 남긴 전체 코드 구조 만들기
아래는 프로젝트 템플릿이야. 이걸 복사해서 시작하고, 빈 칸을 채워나가면 돼.
# === 나의 ML 프로젝트 ===
# 프로젝트명: [여기에 작성]
# 작성일: [여기에 작성]
# 문제 유형: [분류/회귀/군집]
# --- 1. 라이브러리 불러오기 ---
# TODO: 필요한 라이브러리 import
# --- 2. 데이터 불러오기 ---
# TODO: 데이터 로드
# --- 3. 데이터 탐색 ---
# TODO: shape, info, describe, 결측치 확인
# --- 4. 데이터 전처리 ---
# TODO: 결측치 처리, 인코딩, 스케일링 등
# --- 5. 학습/테스트 데이터 분리 ---
# TODO: train_test_split
# --- 6. 모델 학습 ---
# TODO: 모델 선택 및 fit
# --- 7. 예측 ---
# TODO: predict
# --- 8. 평가 ---
# TODO: 성능 지표 계산
# --- 9. 시각화 ---
# TODO: 결과 시각화
# --- 10. 결론 ---
# TODO: 결과 해석, 개선점 기록
여기서 잠깐! 🤔
이 템플릿을 보면 "아, ML 프로젝트는 이런 흐름이구나"가 보이지? 모든 프로젝트는 이 10단계를 거쳐. 외워두면 어떤 프로젝트든 시작할 수 있어!
Step 3: Phase 1 - 데이터 준비¶
목표: 데이터를 불러오고 기본 정보 파악하기
이제 직접 코드를 작성해볼 시간이야. 아래 체크리스트를 보면서 하나씩 완성해봐.
``` ✅ Phase 1 체크리스트
□ 필요한 라이브러리 import 했다
- pandas, numpy
- 시각화 (matplotlib, seaborn)
- sklearn 관련 모듈
□ 데이터를 불러왔다 - csv 파일 또는 sklearn.datasets 사용
□ 기본 정보를 확인했다 - df.shape → 행, 열 개수 - df.head() → 데이터 모양 - df.info() → 컬럼 타입 - df.describe() → 통계 요약
□ 결측치를 확인했다 - df.isnull().sum()