붓꽃(Iris) 분류 모델 - 첫 번째 머신러닝 모델 만들기
개요
붓꽃 분류는 머신러닝의 “Hello World”로 불리는 가장 기본적인 분류 문제입니다. 1936년 영국의 통계학자 Ronald Fisher가 소개한 이 데이터셋은 머신러닝 초보자들이 처음 접하는 대표적인 학습 데이터입니다.
붓꽃 데이터셋 (Iris Dataset)
데이터 구성
- 샘플 수: 150개 (각 종마다 50개)
- 특성(Feature) 수: 4개
- 클래스(Class) 수: 3개
- 데이터 타입: 수치형 (연속형)
붓꽃 종류 (Target Classes)
- Iris Setosa (세토사)
- Iris Versicolor (버시컬러)
- Iris Virginica (버지니카)
측정 특성 (Features)
- 꽃받침 길이 (Sepal Length): 외부 꽃잎의 길이 (cm)
- 꽃받침 너비 (Sepal Width): 외부 꽃잎의 너비 (cm)
- 꽃잎 길이 (Petal Length): 내부 꽃잎의 길이 (cm)
- 꽃잎 너비 (Petal Width): 내부 꽃잎의 너비 (cm)
데이터셋의 특징
장점
- 완전한 데이터: 결측치가 없음
- 균형 잡힌 클래스: 각 클래스마다 동일한 수의 샘플
- 적절한 크기: 초보자 학습에 적합한 150개 샘플
- 사이킷런 내장: 별도 다운로드 없이 바로 사용 가능
분류 난이도
- Setosa: 다른 두 종과 선형 분리 가능 (쉬운 분류)
- Versicolor vs Virginica: 선형 분리 불가능 (어려운 분류)
- 전체 정확도: 일반적으로 90-100% 달성 가능
머신러닝 워크플로우
1. 문제 정의
- 문제 유형: 다중 클래스 분류 (Multi-class Classification)
- 목표: 4개 특성을 이용해 3개 붓꽃 종 예측
- 평가 지표: 정확도 (Accuracy), 정밀도 (Precision), 재현율 (Recall)
2. 데이터 로드 및 탐색
from sklearn.datasets import load_iris
import pandas as pd
# 데이터 로드
iris = load_iris()
data = pd.DataFrame(iris.data, columns=iris.feature_names)
data['species'] = iris.target3. 데이터 전처리
- 결측치 처리: 없음 (완전한 데이터)
- 이상치 처리: 필요시 탐지 및 제거
- 특성 스케일링: 모델에 따라 적용
- 인코딩: 타겟 변수는 이미 수치형
4. 모델 선택
추천 알고리즘 (초보자용):
- K-최근접 이웃 (KNN): 직관적이고 이해하기 쉬움
- 결정 트리 (Decision Tree): 해석 가능한 규칙 생성
- 로지스틱 회귀: 선형 분류의 기본
- 서포트 벡터 머신 (SVM): 높은 성능
5. 데이터 분할
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.2, random_state=42
)6. 모델 학습 및 예측
from sklearn.neighbors import KNeighborsClassifier
# 모델 생성
knn = KNeighborsClassifier(n_neighbors=3)
# 학습
knn.fit(X_train, y_train)
# 예측
y_pred = knn.predict(X_test)7. 성능 평가
from sklearn.metrics import accuracy_score, classification_report
# 정확도 계산
accuracy = accuracy_score(y_test, y_pred)
print(f'정확도: {accuracy:.2f}')
# 상세 분류 성능
print(classification_report(y_test, y_pred, target_names=iris.target_names))시각화 방법
1. 산점도 (Scatter Plot)
- 2개 특성 간의 관계 시각화
- 클래스별 분포 패턴 확인
2. 쌍별 그래프 (Pair Plot)
- 모든 특성 쌍의 관계 한 번에 확인
- 클래스 간 분리 정도 파악
3. 상관관계 히트맵
- 특성 간 상관관계 파악
- 중요한 특성 식별
4. 주성분 분석 (PCA)
- 4차원 데이터를 2D/3D로 차원 축소
- 전체 데이터 분포 시각화
실습에서 배우는 핵심 개념
1. 분류 모델의 기본 구조
- 특성 벡터 → 모델 → 클래스 예측
- 학습 데이터로 패턴 학습, 테스트 데이터로 성능 평가
2. 모델 선택의 중요성
- 데이터에 맞는 적절한 알고리즘 선택
- 각 알고리즘의 장단점 이해
3. 데이터 분할의 필요성
- 과적합 방지
- 일반화 성능 평가
4. 성능 지표 해석
- 정확도 외의 다양한 평가 지표
- 혼동 행렬 (Confusion Matrix) 해석
다음 단계로의 확장
1. 하이퍼파라미터 튜닝
- GridSearchCV를 활용한 최적 매개변수 탐색
- 교차 검증 (Cross Validation) 적용
2. 앙상블 방법
- 여러 모델의 결합으로 성능 향상
- Random Forest, Voting Classifier 등
3. 실무 적용 관점
- 새로운 데이터에 대한 예측 시스템 구축
- 모델 저장 및 불러오기
- 웹 애플리케이션 통합
학습 목표 달성 체크리스트
- 붓꽃 데이터셋의 구조와 특성 이해
- 사이킷런을 활용한 데이터 로드 및 전처리
- 기본 분류 모델 구현 및 학습
- 모델 성능 평가 및 해석
- 시각화를 통한 데이터 탐색
- 머신러닝 워크플로우 전체 경험
참고 자료
- Scikit-learn Iris Dataset Documentation
- UCI Machine Learning Repository - Iris Dataset
- Machine Learning Mastery - Iris Classification Tutorial
이 문서는 머신러닝 기초 학습의 두 번째 단계로, 실제 모델 구현을 통해 분류 문제의 전체 과정을 경험하는 것을 목표로 합니다.