카테고리 없음

분류

배채 2025. 4. 23. 08:10

✅ 4주차: 분류(Classification) 요약

1. 📘 분류란?

  • 데이터를 여러 클래스(Label) 중 하나로 예측하는 작업
  • 예시: 사진이 ‘개’, ‘고양이’, ‘토끼’ 중 어떤 것인지 판별

2. 🔍 주요 분류 알고리즘

알고리즘개요
로지스틱 회귀 (Logistic Regression) 로지스틱 함수(시그모이드)를 통해 확률을 모델링
k-최근접 이웃 (K-Nearest Neighbors, KNN) 가장 가까운 데이터 K개를 기반으로 다수결 분류
의사 결정 트리 (Decision Tree) 조건 분기를 따라가는 트리 구조
랜덤 포레스트 (Random Forest) 여러 트리를 앙상블하여 분류 성능 향상
나이브 베이즈 (Naive Bayes) 조건부 확률을 기반으로 계산 (P(클래스

3. 📏 성능 평가 지표

지표설명
Accuracy 전체 중 맞춘 비율
Precision Positive 예측 중 실제로 Positive인 비율
Recall (Sensitivity) 실제 Positive 중 맞춘 비율
ROC / AUC 다양한 기준에서 분류 성능을 시각화 및 수치화

4. ✅ 실습 과제

  • [1] KNN 분류 예제를 실습하고 제출
  • [2] 랜덤 포레스트 분류 예제 + AUC 포함 성능 평가 실습 및 제출

💻 예제 코드 (KNN & 랜덤 포레스트)

📌 [1] KNN 분류 예제 (Iris 데이터)

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 데이터 불러오기
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris.data, iris.target, test_size=0.3, random_state=42)

# 모델 정의 및 학습
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 예측 및 정확도 평가
y_pred = knn.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

📌 [2] 랜덤 포레스트 + AUC 평가 예제

 
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score, accuracy_score
from sklearn.preprocessing import label_binarize

# 다중 클래스에 대해 one-hot 인코딩 필요
y_test_bin = label_binarize(y_test, classes=[0, 1, 2])

# 모델 정의 및 학습
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, y_train)

# 예측
y_prob = rf.predict_proba(X_test)
y_pred = rf.predict(X_test)

# 성능 평가
print("Accuracy:", accuracy_score(y_test, y_pred))
print("AUC (macro):", roc_auc_score(y_test_bin, y_prob, multi_class='ovr'))

 

반응형