붓꽃(Iris) 분류 모델 - 첫 번째 머신러닝 모델 만들기

개요

붓꽃 분류는 머신러닝의 “Hello World”로 불리는 가장 기본적인 분류 문제입니다. 1936년 영국의 통계학자 Ronald Fisher가 소개한 이 데이터셋은 머신러닝 초보자들이 처음 접하는 대표적인 학습 데이터입니다.

붓꽃 데이터셋 (Iris Dataset)

데이터 구성

  • 샘플 수: 150개 (각 종마다 50개)
  • 특성(Feature) 수: 4개
  • 클래스(Class) 수: 3개
  • 데이터 타입: 수치형 (연속형)

붓꽃 종류 (Target Classes)

  1. Iris Setosa (세토사)
  2. Iris Versicolor (버시컬러)
  3. Iris Virginica (버지니카)

측정 특성 (Features)

  1. 꽃받침 길이 (Sepal Length): 외부 꽃잎의 길이 (cm)
  2. 꽃받침 너비 (Sepal Width): 외부 꽃잎의 너비 (cm)
  3. 꽃잎 길이 (Petal Length): 내부 꽃잎의 길이 (cm)
  4. 꽃잎 너비 (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.target

3. 데이터 전처리

  • 결측치 처리: 없음 (완전한 데이터)
  • 이상치 처리: 필요시 탐지 및 제거
  • 특성 스케일링: 모델에 따라 적용
  • 인코딩: 타겟 변수는 이미 수치형

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. 실무 적용 관점

  • 새로운 데이터에 대한 예측 시스템 구축
  • 모델 저장 및 불러오기
  • 웹 애플리케이션 통합

학습 목표 달성 체크리스트

  • 붓꽃 데이터셋의 구조와 특성 이해
  • 사이킷런을 활용한 데이터 로드 및 전처리
  • 기본 분류 모델 구현 및 학습
  • 모델 성능 평가 및 해석
  • 시각화를 통한 데이터 탐색
  • 머신러닝 워크플로우 전체 경험

참고 자료


이 문서는 머신러닝 기초 학습의 두 번째 단계로, 실제 모델 구현을 통해 분류 문제의 전체 과정을 경험하는 것을 목표로 합니다.