Chapter 5: 데이터가 없으면 머신러닝도 없다¶
한 줄 요약: 머신러닝은 데이터로 배운다. 데이터를 불러오고, 특성과 정답을 구분하는 법을 익혀보자.
🎯 이 장에서 배우는 것¶
- [ ] 머신러닝에서 데이터의 역할을 설명할 수 있다
- [ ] CSV 파일을 불러와 데이터프레임으로 확인할 수 있다
- [ ] 데이터의 특성(feature)과 정답(label)을 구분할 수 있다
- [ ] 붓꽃 데이터셋의 구조를 이해하고 탐색할 수 있다
💡 왜 이걸 배우나요?¶
머신러닝의 핵심은 "데이터"¶
"인공지능이 대단하다"는 말, 많이 들어봤지? 그런데 정작 인공지능(특히 머신러닝)이 어떻게 똑똑해지는지 아는 사람은 많지 않아.
비밀을 알려줄게: 데이터야.
머신러닝 모델은 마법처럼 스스로 똑똑해지는 게 아니야. 수많은 데이터를 보면서 패턴을 찾고, 그 패턴을 기억해두는 거지. 마치 우리가 문제집을 많이 풀수록 시험을 잘 보는 것처럼!
┌─────────────────────────────────────────────────────────┐
│ 머신러닝의 비밀 │
├─────────────────────────────────────────────────────────┤
│ │
│ 📚 문제집 많이 풀기 → 🎯 시험 잘 보기 │
│ (학습) (예측) │
│ │
│ 📊 데이터 많이 보기 → 🤖 새 데이터 잘 맞추기 │
│ (훈련) (추론) │
│ │
│ ───────────────────────────────────────────────── │
│ 결론: 좋은 데이터 없이는 좋은 AI도 없다! │
└─────────────────────────────────────────────────────────┘
이 장을 배우면¶
- AI가 어떻게 학습하는지 원리를 이해하게 돼
- 실제 데이터를 다루는 법을 배워서, 나중에 내 프로젝트에 적용할 수 있어
- 특성과 정답의 구분이라는 머신러닝의 핵심 개념을 익히게 돼
데이터를 이해하지 못하면 머신러닝도 이해할 수 없어. 오늘은 그 첫걸음을 내딛는 날이야!
📚 핵심 개념¶
개념 1: 데이터 - 머신러닝의 교과서¶
비유로 시작: 데이터는 마치 문제집과 같아. 시험 전에 문제집을 풀면서 "아, 이런 유형은 이렇게 풀면 되는구나"를 배우잖아? 머신러닝 모델도 데이터(문제집)를 보면서 패턴을 배워.
정확한 정의: 데이터(Data)는 머신러닝 모델이 학습하는 데 사용하는 정보의 집합이야. 보통 표(table) 형태로 되어 있어서, 엑셀 시트처럼 행(row)과 열(column)로 구성돼.
예시로 확인:
┌──────────────────────────────────────────────────────────────────┐
│ 붓꽃(Iris) 데이터셋 │
├──────────────────────────────────────────────────────────────────┤
│ │
│ 꽃잎 길이 꽃잎 너비 꽃받침 길이 꽃받침 너비 품종 │
│ ──────── ──────── ────────── ────────── ───── │
│ 5.1 3.5 1.4 0.2 setosa │
│ 4.9 3.0 1.4 0.2 setosa │
│ 7.0 3.2 4.7 1.4 versicolor │
│ 6.3 3.3 6.0 2.5 virginica │
│ ... ... ... ... ... │
│ │
│ → 150개의 붓꽃 데이터, 4개의 측정값 + 1개의 품종 정보 │
└──────────────────────────────────────────────────────────────────┘
쉽게 말하면: 데이터는 AI가 공부하는 문제집이야. 문제(특성)와 정답(레이블)이 쌍으로 들어있어!
개념 2: 특성(Feature) - "무엇을 보고 판단할까?"¶
비유로 시작: 특성은 마치 시험 문제의 조건과 같아. "키가 180cm, 몸무게가 75kg인 사람의 BMI는?"에서 키와 몸무게가 조건이잖아? 머신러닝에서는 이런 조건을 '특성'이라고 불러.
정확한 정의: 특성(Feature)은 모델이 예측을 하기 위해 참고하는 입력 변수야. 데이터의 각 열(column)이 하나의 특성이 돼. X라고도 표기해.
예시로 확인:
붓꽃 분류 문제의 특성들:
┌──────────────────────────────────────────────────┐
│ 특성 1: 꽃받침 길이 (sepal_length) - 단위: cm │
│ 특성 2: 꽃받침 너비 (sepal_width) - 단위: cm │
│ 특성 3: 꽃잎 길이 (petal_length) - 단위: cm │
│ 특성 4: 꽃잎 너비 (petal_width) - 단위: cm │
└──────────────────────────────────────────────────┘
꽃받침 꽃잎
(sepal) 🌿 (petal) 🌸
│ │
┌────┴────┐ ┌────┴────┐
│ │ │ │
길이 너비 길이 너비
* 모델은 이 4가지 측정값을 보고 품종을 판단해!
쉽게 말하면: 특성은 "AI야, 이걸 보고 판단해!"라고 알려주는 정보야.
개념 3: 정답/레이블(Label) - "무엇을 맞춰야 할까?"¶
비유로 시작: 레이블은 마치 문제집 뒷장의 정답과 같아. 문제를 풀고 나서 정답을 확인하면서 "아, 이게 답이구나" 배우잖아? 모델도 레이블을 보면서 자기가 맞았는지 틀렸는지 확인해.
정확한 정의: 레이블(Label) 또는 타겟(Target)은 모델이 예측해야 하는 정답이야. y라고도 표기해. 학습할 때는 레이블을 알려주고, 실제로 사용할 때는 레이블 없이 특성만 주면서 "맞춰봐!"라고 해.
예시로 확인:
┌────────────────────────────────────────────────────────┐
│ 학습 데이터 (정답 있음) │
├────────────────────────────────────────────────────────┤
│ │
│ 특성들 (X) 레이블 (y) │
│ ────────────────── ───────────── │
│ [5.1, 3.5, 1.4, 0.2] → "setosa" │
│ [7.0, 3.2, 4.7, 1.4] → "versicolor" │
│ [6.3, 3.3, 6.0, 2.5] → "virginica" │
│ │
│ 모델: "아~ 꽃잎이 길면 virginica구나!" │
└────────────────────────────────────────────────────────┘
┌────────────────────────────────────────────────────────┐
│ 새 데이터 (정답 모름) │
├────────────────────────────────────────────────────────┤
│ │
│ 특성들 (X) 레이블 (y) │
│ ────────────────── ───────────── │
│ [5.8, 2.7, 5.1, 1.9] → ??? │
│ │
│ 모델: "음... 배운 패턴으로 보면... versicolor!" │
└────────────────────────────────────────────────────────┘
쉽게 말하면: 레이블은 "정답은 이거야!"라고 알려주는 거야. 모델은 이걸 보면서 배워.
개념 4: 특성과 레이블의 관계¶
┌─────────────────────────────────────────────────────────────────┐
│ 특성 vs 레이블 완벽 정리 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 특성 (Feature) 레이블 (Label) │
│ ───────────── ─────────────── │
│ 입력값 출력값 (정답) │
│ X로 표기 y로 표기 │
│ 여러 개 가능 보통 1개 │
│ 모델에게 주는 정보 모델이 맞춰야 할 것 │
│ │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ 꽃받침 길이: 5.1 │ │ │ │
│ │ 꽃받침 너비: 3.5 │ → │ 품종: setosa │ │
│ │ 꽃잎 길이: 1.4 │ │ │ │
│ │ 꽃잎 너비: 0.2 │ └─────────────────────┘ │
│ └─────────────────────┘ │
│ 특성 (X) 레이블 (y) │
│ │
├─────────────────────────────────────────────────────────────────┤
│ 💡 기억법: "특성을 보고 → 레이블을 맞추는 게 머신러닝!" │
└─────────────────────────────────────────────────────────────────┘
개념 5: 데이터프레임 - 데이터를 담는 그릇¶
비유로 시작: 데이터프레임은 마치 엑셀 시트와 같아. 행과 열로 이루어진 표 형태로 데이터를 깔끔하게 정리해놓은 거지.
정확한 정의: 데이터프레임(DataFrame)은 pandas 라이브러리가 제공하는 2차원 표 형태의 데이터 구조야. 행(row)은 각 데이터 샘플, 열(column)은 특성을 나타내.
예시로 확인:
# 데이터프레임의 구조
import pandas as pd
# 열(column) = 특성
# ↓
# ┌───────────────────────────────────────────┐
# │ sepal_length sepal_width ... species │
# ├───────────────────────────────────────────┤
# 행 │ 5.1 3.5 ... setosa │ ← 첫 번째 꽃
# ↓ │ 4.9 3.0 ... setosa │ ← 두 번째 꽃
# │ 7.0 3.2 ... versicolor│ ← 세 번째 꽃
# └───────────────────────────────────────────┘
쉽게 말하면: 데이터프레임은 파이썬에서 데이터를 담아두는 '엑셀 시트'야!
🔨 따라하기¶
Step 1: 붓꽃 데이터셋 불러오기¶
목표: scikit-learn에서 제공하는 붓꽃(Iris) 데이터셋을 불러와보자.
📦 데이터셋 선택지 - 붓꽃(Iris) 데이터: 가장 유명한 머신러닝 입문 데이터 (이 장에서 사용) - 와인 품질 데이터: 와인의 화학 성분으로 품질 예측 - 펭귄 데이터: 펭귄의 신체 측정치로 종 분류
어떤 걸 써도 특성/레이블 개념은 동일하게 적용