이미지 분류

실행 준비

실습 코드 앞의 코드 셀에서 import numpy as np, import matplotlib.pyplot as plt를 실행하세요. 배열 연산에는 np, 그림에는 plt를 사용합니다.

학습 목표

이미지 분류 정확도 뒤의 오답을 살펴보며 전처리와 자료 분리의 영향을 확인합니다.

이미지 배열과 Label

시작 조건

외부 다운로드 없는 sklearn load_digits의 8×8 영상 중 Class 0~4를 사용합니다. 분할은 stratified 70/30, seed=7입니다.

진행 방법

  1. 영상 한 장의 8×8 배열과 Flatten된 64개 특징을 확인하세요.
  2. Train에 fit한 StandardScaler와 LogisticRegression(max_iter=1000)으로 기준 분류를 수행하세요.

남길 결과

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
D=load_digits();mask=D.target<5;X=D.data[mask];y=D.target[mask]
Xtr,Xte,ytr,yte=train_test_split(X,y,test_size=.3,random_state=7,stratify=y)
scaler=StandardScaler().fit(Xtr);clf=LogisticRegression(max_iter=1000).fit(scaler.transform(Xtr),ytr)
print(clf.score(scaler.transform(Xte),yte))

결과 기록·자가 점검

단계:

표본 수:

입력 shape:

Label 범위:

확인할 점

오분류와 모호한 입력

시작 조건

Test에서 오분류를 최대 6개 골라 영상·정답·예측·최대 확률을 함께 표시합니다. 없으면 낮은 확신 표본을 선택합니다.

진행 방법

  1. Test 예측과 정답이 다른 Index를 찾아 앞에서 최대 6개를 선택하세요. 오분류가 없으면 최대 예측 확률이 작은 순서로 최대 6개를 고르세요.
  2. 각 Index의 원래 64개 값을 8×88\times8 영상으로 그리고, 제목에 Test Index·정답·예측·최대 확률을 표시하세요.
  3. 그림에서 관찰되는 특징과 모델의 예측을 구분해 설명하세요. 모델과 Scaler는 재학습하지 않습니다.

남길 결과

prob=clf.predict_proba(scaler.transform(Xte));pred=clf.predict(scaler.transform(Xte))

결과 기록·자가 점검

선택한 Test Index:

원본 영상:

정답·예측:

최대 예측 확률·관찰:

확인할 점

다른 입력에서도 확인하기

시작 조건

선택한 Test 영상 하나에 seed=7의 작은 잡음을 더하고 0~16 범위로 제한해 예측을 비교합니다.

진행 방법

  1. 활동 2에서 본 Test 영상 하나를 골라 Index를 적으세요. Seed 7로 작은 잡음을 더하고 np.clip(...,0,16)으로 픽셀 범위를 제한하세요. 예를 들어 평균 0·표준편차 0.5인 정규 잡음을 사용할 수 있습니다.
  2. 원본과 잡음 영상을 같은 밝기 범위로 표시하세요. 같은 Scaler와 모델에 두 영상을 각각 넣어 예측 Class와 Class별 확률을 구하세요.
  3. 사용한 잡음 분포·크기와 두 예측·확률을 기록하고, 시각적인 변화와 예측 변화가 같은 의미인지 설명하세요.

남길 결과

# 앞 활동의 데이터와 함수를 사용해 지정된 새 예제를 검사하세요.

결과 기록·자가 점검

Test Index·잡음 조건:

원본·잡음 영상:

원본의 예측·Class별 확률:

잡음 영상의 예측·Class별 확률:

확인할 점