logo

분류

분류의 목표

  • 분류(classification): 입력 특성을 바탕으로 새로운 사례가 미리 정한 범주인 클래스(class) 중 어디에 속하는지 예측하는 지도학습 문제
  • 이진 분류(binary classification): 두 클래스 중 하나를 예측. 예: 정상/불량, 스팸/일반 메일
  • 다중 분류(multiclass classification): 세 개 이상의 클래스 중 하나를 예측. 예: 상품 유형을 식품/의류/전자제품으로 구분
  • 클래스에 붙인 숫자는 범주를 구분하는 표시. 정상과 불량을 0과 1로 표시해도 연속적인 수치를 예측하는 회귀와는 다른 문제

실습 데이터: 전자 부품 불량 판정

  • 전자 부품 10,000개의 보관 조건과 표면 상태로 검사에서 불량 판정을 받을지 예측하는 데이터
  • 비슷한 보관 조건과 표면 상태에서도 정상과 불량이 섞인 구성
  • 입력 변수
    • exposure_hours: 습한 환경 노출 시간(0~12시간)
    • humidity: 상대 습도(20~100%)
    • contamination_index: 표면 오염 지수(0~100, 높을수록 오염이 심함)
  • 타깃 defective: 0=정상, 1=불량
  • 양성(positive) 클래스: 찾아내려는 결과인 불량(1).
    • 여기서 positive는 긍정적이라는 뜻이 아님

실습 준비

!wget -q -O electronic_parts.xlsx "https://www.mindscale.kr/content-assets/4e0c5cd818b22412d02bca8cd47a142c9f65023b6f1e1890f6144c4235b58eb9/electronic_parts.xlsx"
import pandas as pd

df = pd.read_excel("electronic_parts.xlsx")
df.head()
실행 결과
   exposure_hours  humidity  contamination_index  defective
0             4.1      93.8                 25.3          0
1             4.8      26.2                 17.0          0
2             2.2      71.4                 27.6          0
3             5.4      83.7                 27.5          0
4             7.5      45.0                 95.1          1
df["defective"].value_counts().sort_index()
실행 결과
defective
0    6783
1    3217
Name: count, dtype: int64
  • 불량 3,217개, 정상 6,783개. 정상 부품이 더 많은 구성

학습·검증·테스트 데이터 분할

  • 학습 6,000개: 나무 모델 학습
  • 검증 2,000개: 나무의 깊이 선택
  • 테스트 2,000개: 깊이를 선택한 모델의 최종 평가
  • 네 분류 실습에서 같은 분할과 양성 클래스 사용
from sklearn.model_selection import train_test_split

features = ["exposure_hours", "humidity", "contamination_index"]
X = df[features]
y = df["defective"]

X_train_valid, X_test, y_train_valid, y_test = train_test_split(
    X, y,
    test_size=0.2,     # 전체의 20%를 최종 테스트용으로 보관
    random_state=42,   # 네 실습에서 같은 사례로 분할
    stratify=y,        # 정상과 불량의 비율 유지
)
X_train, X_valid, y_train, y_valid = train_test_split(
    X_train_valid, y_train_valid,
    test_size=0.25,    # 남은 80%의 25%: 전체의 20%를 검증용으로 보관
    random_state=42,
    stratify=y_train_valid,
)

퀴즈

문제 1 / 4맞음: 0힌트: 0틀림: 0채점중: 0남음: 4

전자 부품의 정상과 불량을 각각 0과 1로 표시했을 때, 이 예측 문제가 분류에 해당하는 이유는 무엇입니까?

  • ○숫자가 연속적인 측정값이 아니라 서로 다른 범주를 나타내기 때문이다
  • ○입력 변수에 시간과 습도처럼 숫자로 측정한 값이 있기 때문이다
  • ○데이터에 정상 부품이 불량 부품보다 더 많기 때문이다
  • ○데이터를 학습·검증·테스트로 나누어 사용하기 때문이다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
학습·검증·테스트 데이터 분할