Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 정수 대신 문자열 레이블 축으로 혼동 행렬(Confusion Matrix) 그리는 방법

머신러닝 모델의 분류 성능을 평가할 때 혼동 행렬(Confusion Matrix)은 필수적인 도구입니다. 기본적으로 혼동 행렬은 정수 인덱스로 표시되지만, 클래스 이름을 문자열로 직접 표시하면 결과를 훨씬 직관적으로 해석할 수 있습니다.

파이썬의 matplotlibscikit-learn을 활용하면 x축과 y축에 문자열 레이블을 지정한 혼동 행렬을 손쉽게 그릴 수 있습니다. 아래 단계를 따라 해 보세요.

구현 단계

  • 레이블 리스트 생성: 클래스 이름들을 담은 리스트를 먼저 만듭니다.
  • 혼동 행렬 계산: scikit-learn의 confusion_matrix() 함수를 사용해 분류 결과의 정확도를 평가합니다.
  • 서브플롯 추가: add_subplot() 메서드로 figure에 ~.axes.Axes 객체를 추가합니다.
  • 행렬 시각화: matshow() 메서드로 2차원 행렬 값을 색상 코드 이미지로 표현합니다.
  • 컬러바 추가: colorbar() 메서드를 사용해 ScalarMappable 인스턴스에 대한 컬러바를 생성합니다.
  • 축 레이블 설정: set_xticklabels()set_yticklabels() 메서드로 x축과 y축 눈금 레이블을 문자열로 지정합니다.
  • 그래프 출력: show() 메서드로 최종 그림을 화면에 표시합니다.

예제 코드

from matplotlib import pyplot as plt
from sklearn.metrics import confusion_matrix
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
labels = ['business', 'health']
cm = confusion_matrix([3], [2])
fig = plt.figure()
ax = fig.add_subplot(111)
cax = ax.matshow(cm)
fig.colorbar(cax)
ax.set_xticklabels([''] + labels)
ax.set_yticklabels([''] + labels)
plt.show()

실행 결과

위 코드를 실행하면 x축과 y축에 'business'와 'health'라는 문자열 레이블이 표시된 혼동 행렬이 나타납니다. 각 셀의 값은 컬러바를 통해 색상 강도로 구분됩니다.

핵심 포인트

set_xticklabels()set_yticklabels() 호출 시 빈 문자열('')을 리스트 앞에 추가하는 이유는, matplotlib의 눈금이 0부터 시작하기 때문입니다. 빈 문자열을 넣어 첫 번째 눈금 위치를 비워 두면 레이블이 실제 데이터 위치와 정확히 일치하게 됩니다.