Replicated

다중클래스 분류의 코드 구현 본문

빅데이터마이닝

다중클래스 분류의 코드 구현

라구넹 2025. 4. 12. 16:50

손글씨를 숫자로 인식하는 이미지 분류 문제

컴퓨터는 이미지를 일종의 숫자로 변환하여 인식

- mxn 공간에서 색이 진할 수록 높은 값, 옅을 수록 낮은 값

 

from sklearn import datasets
digit_dataset = datasets.load_digits()
digit_dataset.keys()

 

이미지 뽑아 보면 1797개의 8 * 8 짜리 존재

 

0번째 샘플의 값은 0임

 

찍어보면 이렇게 데이터가 존재

 

import matplotlib.pyplot as plt
from random import randint

_, axes = plt.subplots(nrows=1, ncols=4, figsize=(10, 3))

for ax in axes: # (2)
  num = randint(1, 1000) # (3)
  image = digit_dataset["images"][num]
  label = digit_dataset["target"][num]
  ax.set_axis_off()
  ax.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
  ax.set_title('Training: %i' % label)

랜덤으로 숫자 뽑아서 image, target 가져오고 플롯 그리면?

이렇게 그려짐

 

일단 8*8행렬이니 64개의 피쳐로 표현 가능

 

from sklearn.model_selection import train_test_split

X = digit_dataset["data"]
y = digit_dataset["target"]
X_train, X_test, y_train, y_test = train_test_split(X, y)

데이터와 타겟으로 X, y 만들고 트레인, 테스트 스플릿

 

from sklearn.linear_model import LogisticRegression
logreg_ovr = LogisticRegression(multi_class="ovr")
logreg_ovr.fit(X_train, y_train)

다중 클래스 분류

 

from sklearn.metrics import confusion_matrix
y_pred = logreg_ovr.predict(X_test).copy()
y_true = y_test.copy()
confusion_matrix(y_true, y_pred)

혼동 행렬로 표현 가능함

 

분류 리포트고 있음

 

랜덤으로 숫자 뽑아서 테스트해보면 맞추는 걸 볼 수 있음

저거 reshape 안하면 에러나는데, predict가 2차원 배열 입력을 기대하기 때문

'빅데이터마이닝' 카테고리의 다른 글

나이브 베이지안 분류기  (0) 2025.04.12
베이즈 분류기  (0) 2025.04.12
다중클래스 분류 & 소프트맥스 분류  (0) 2025.04.12
로지스틱 회귀 구현  (0) 2025.04.12
분류 문제의 성능 지표  (0) 2025.04.12