Scikit-Learn 혼동 행렬

Beginner

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

소개

혼동 행렬은 분류 알고리즘의 성능을 평가하는 도구입니다. 예측된 클래스 레이블과 실제 클래스 레이블을 비교하여 분류 모델의 성능을 요약하는 표입니다. 이 튜토리얼에서는 scikit-learn 라이브러리를 사용하여 혼동 행렬을 생성하고 결과를 시각화하는 방법을 보여줍니다.

VM 팁

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

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

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

라이브러리 가져오기

먼저 필요한 라이브러리를 가져와야 합니다. scikit-learn, matplotlib, numpy, 그리고 datasets 를 사용할 것입니다.

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import ConfusionMatrixDisplay

데이터 로드

scikit-learn 의 iris 데이터셋을 사용할 것입니다. 이 데이터셋은 150 개의 샘플로 구성되며, 각 샘플은 네 가지 특징과 대상 레이블을 포함합니다.

iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names

데이터 분할

데이터셋을 학습용 데이터셋과 테스트용 데이터셋으로 분할할 것입니다. 학습용 데이터셋은 모델을 학습하는 데 사용되고, 테스트용 데이터셋은 모델의 성능을 평가하는 데 사용됩니다.

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

모델 학습

선형 커널을 사용하여 서포트 벡터 머신 (SVM) 분류기를 학습할 것입니다. 결과에 미치는 영향을 보기 위해 너무 낮은 정규화 매개변수 C 를 사용할 것입니다.

classifier = svm.SVC(kernel="linear", C=0.01).fit(X_train, y_train)

혼동 행렬 생성

scikit-learn 의 ConfusionMatrixDisplay 클래스를 사용하여 혼동 행렬을 생성할 것입니다. 혼동 행렬은 각 클래스에 대한 올바른 예측과 잘못된 예측의 수를 보여줍니다.

np.set_printoptions(precision=2)
disp = ConfusionMatrixDisplay.from_estimator(
    classifier,
    X_test,
    y_test,
    display_labels=class_names,
    cmap=plt.cm.Blues,
    normalize=None,
)

혼동 행렬 시각화

matplotlib 을 사용하여 혼동 행렬을 시각화할 것입니다. 정규화되지 않은 혼동 행렬과 정규화된 혼동 행렬을 모두 플롯할 것입니다.

titles_options = [
    ("정규화되지 않은 혼동 행렬", None),
    ("정규화된 혼동 행렬", "true"),
]
for title, normalize in titles_options:
    disp = ConfusionMatrixDisplay.from_estimator(
        classifier,
        X_test,
        y_test,
        display_labels=class_names,
        cmap=plt.cm.Blues,
        normalize=normalize,
    )
    disp.ax_.set_title(title)
    print(title)
    print(disp.confusion_matrix)
plt.show()

요약

이 튜토리얼에서는 scikit-learn 라이브러리를 사용하여 혼동 행렬을 생성하고 결과를 시각화하는 방법을 배웠습니다. 아이리스 데이터셋을 불러와서 학습 및 테스트 세트로 분할하고, 서포트 벡터 머신 분류기를 학습시킨 후 혼동 행렬을 생성하고 시각화했습니다. 혼동 행렬은 각 클래스에 대한 올바른 예측과 잘못된 예측의 수를 보여주었으며, 시각화는 결과 해석에 도움이 되었습니다.