Menu
CoddyTech

손글씨 숫자 인식

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 57번째.

우체국의 분류 기계는 한눈에 보는 숫자에서 본 8×8 스캔 이미지로부터 손으로 쓴 우편번호 숫자를 읽습니다. load_digits:

두 줄에 걸쳐 서로 다른 두 사람이 쓴 손글씨 숫자 0부터 9까지 스무 개가 작은 회색 블록 형태의 스캔 이미지로 그려져 있으며, 일부는 다른 숫자와 매우 비슷해 보입니다

두 후보가 그 일자리를 원합니다. 엔지니어가 제안한 k를 사용하는 k-NN과 100개의 트리로 이루어진 랜덤 포레스트입니다.

이번에는 실수가 중요합니다. 사무실에서는 더 공정한 모델과 보지 못한 스캔에서의 점수, 그리고 가장 흔한 혼동 사례를 알아야 하므로, 해당 숫자는 사람이 확인합니다.

challenge icon

챌린지

어려움

프로그램은 엔지니어의 k를 읽고, 시작 코드는 제목이 있는 차트를 설정합니다.

  1. 계층화된 테스트 데이터 4분의 1을 분리합니다. random_state=0.
  2. 학습 데이터에서 해당 k를 사용하는 k-NN과 트리 100개로 구성된 랜덤 포레스트(random_state=0)를 5겹 교차 검증합니다. 각 평균(소수점 3자리)과 승자를 출력합니다.
  3. 승자를 학습시키고 테스트 정확도를 출력합니다.
  4. 테스트 혼동 행렬에서 가장 큰 오분류를 출력한 다음, ax에 행렬을 그려 표시합니다.

다른 머신과 3을 사용하면:

k-NN: CV accuracy 0.979
Random forest: CV accuracy 0.968
Winner: k-NN
Test accuracy: 0.976
Most confused: 7 read as 2 (3 times)

그런 다음 Coddy가 행렬을 표시합니다.

직접 해보기

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

digits = load_digits()
X = digits.data
y = digits.target
k = int(input())

fig, ax = plt.subplots()
ax.set_title("Test Digits")

# 아래에 코드를 작성하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러