숫자 데이터셋 분석

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 scikit-learn 숫자 데이터셋을 탐색합니다. 이 데이터셋은 0-9 사이의 손글씨 숫자를 나타내는 1797 개의 8x8 픽셀 이미지로 구성되어 있습니다. 우리의 목표는 이 데이터셋을 분석하고, 머신러닝 알고리즘을 사용하여 손글씨 숫자를 분류하는 방법을 이해하는 것입니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습용 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업 검증은 자동화될 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

데이터셋 가져오기

첫 번째 단계는 scikit-learn 에서 다음 코드를 사용하여 숫자 데이터셋을 가져오는 것입니다.

from sklearn import datasets

## 숫자 데이터셋 로드
digits = datasets.load_digits()

데이터셋 시각화

데이터셋을 더 잘 이해하기 위해 matplotlib 를 사용하여 샘플 이미지를 시각화할 수 있습니다. 다음 코드는 데이터셋의 마지막 숫자를 표시합니다.

import matplotlib.pyplot as plt

## 마지막 숫자 표시
plt.figure(1, figsize=(3, 3))
plt.imshow(digits.images[-1], cmap=plt.cm.gray_r, interpolation="nearest")
plt.show()

머신러닝을 위한 데이터셋 준비

머신러닝 모델을 데이터셋에 학습시키기 전에 데이터를 학습용과 테스트용으로 분할하여 준비해야 합니다. 이 작업은 scikit-learn 의 train_test_split 함수를 사용하여 수행할 수 있습니다.

from sklearn.model_selection import train_test_split

## 데이터셋을 학습용과 테스트용으로 분할
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42)

머신러닝 모델 학습

이제 데이터셋을 준비했으므로 학습 데이터를 사용하여 머신러닝 모델을 학습시킬 수 있습니다. 이 예제에서는 서포트 벡터 머신 (SVM) 알고리즘을 사용합니다.

from sklearn.svm import SVC

## SVM 분류기를 생성
clf = SVC(kernel='linear')

## 학습 데이터로 분류기를 학습
clf.fit(X_train, y_train)

모델 평가

모델의 성능을 평가하기 위해 scikit-learn 의 accuracy_score 함수를 사용할 수 있습니다.

from sklearn.metrics import accuracy_score

## 테스트 세트의 레이블 예측
y_pred = clf.predict(X_test)

## 모델의 정확도 계산
accuracy = accuracy_score(y_test, y_pred)

## 모델의 정확도 출력
print("Accuracy:", accuracy)

모델 개선

모델의 정확도가 만족스럽지 않다면 SVM 알고리즘의 하이퍼파라미터를 조정하여 개선해 볼 수 있습니다. 예를 들어, C 매개변수의 값을 변경해 볼 수 있습니다.

## 다른 C 값으로 SVM 분류기를 생성
clf = SVC(kernel='linear', C=0.1)

## 학습 데이터로 분류기를 학습
clf.fit(X_train, y_train)

## 테스트 세트의 레이블 예측
y_pred = clf.predict(X_test)

## 모델의 정확도 계산
accuracy = accuracy_score(y_test, y_pred)

## 모델의 정확도 출력
print("Accuracy:", accuracy)

요약

이 실습에서는 scikit-learn 의 digits 데이터셋을 탐색하고, 손글씨 숫자를 분류하는 머신러닝 모델을 학습하는 방법을 배웠습니다. 또한, 모델의 성능을 평가하고 알고리즘의 하이퍼파라미터를 조정하여 모델을 개선하는 방법도 학습했습니다. 이 데이터셋은 머신러닝 분류 알고리즘에 관심 있는 모든 사람에게 좋은 자료입니다.