분류 문제의 인공지능 성능 평가 - 분류결과표, 정확도, 평가 지표

반응형

 

이전 글에서 학습시킨 로지스틱 회귀 모델 인공지능의 데이터를 기반으로 작성되었습니다.

이전 글 확인하기 : https://luvris2.tistory.com/48

 

인공지능 머신러닝 - 로지스틱 회귀 모델(Logistic Regression)

로지스틱 회귀 (Logistic Regression) 종속 변수가 이분형일 때 수행할 수 있는 회귀 분석 기법의 한 종류 종속 변수(y)를 0과 1로 분류 기본 개념 자세히 알아보기 더보기 선형 회귀(Linear Regression)으로

luvris2.tistory.com


분류 결과표(Confusion Matrix)

  • 실제값과 예측값이 일치하는지 갯수로 센 결과를 표로 나타낸 것
  • 실제값은 행(row)에 표시, 예측값은 열(column)에 표시
  • 0과 1의 이진 분류의 경우에는 양성(Positive)와 음성(Negative)로 표시
    • 이진 분류 결과표(Binary Confusion Matrix)


이진 분류 결과표(Binary Confusion Matrix)

  • 정확도(Accuracy) : 전체 건 수에서 예측 적중률
    • (A+B) / TOTAL
  • 정밀도(Precision) : 예측 불량 건 수에서 예측 적중률
    • D / (B+D)

  • 재현율(Recall) : 실사기 건 수에서 예측 적중률
    • D / (C+D)
  • 정밀도(Precision) : 예측 사기 건 수에서 실사기 건 수 비율
    • D / (B+D)

분류결과표 라이브러리 호출

from sklearn.metrics import confusion_matrix
# 인공지능 성능 검사를 위한 라이브러리

from sklearn.metrics import accuracy_score
# 인공지능 성능 정확도 확인을 위한 라이브러리

from sklearn.metrics import classification_report
# 평가 지표를 확인 할 수 있는 라이브러리

인공지능 성능 검사, 분류 결과표 보기

<로지스틱 회귀 모델로 인공지능 학습하여 예측한 데이터>

 

  • 분류 결과표 표시 (confusion_matrix)
    • from sklearn.metrics import confusion_matrix 호출
    • confusion_matrix(실제값, 예측값)

 

  • 인공지능의 예측 정확도 계산 (accuracy_score)
    • from sklearn.metrics import accuracy_score 호출
    • accuracy_score(실제값, 예측값)
    • 61과 23의 값은 위의 분류 결과표 참조

 

  • 인공지능 평가 지표 보기
    • from sklearn.metrics import classification_report 호출
    • classification_report(실제값, 예측값)
      • 정밀도(Precision), 적중률(Recall)
      • 인공지능 성능 정확도에 대한 보완 평가 지표(f1-score(조화평균지표))
      • 학습에 사용되었던 실제값(support)


인공지능 학습 결과 시각화 하기

  • 테스트 데이터로 예측한 결과 값 그래프화
# 테스트 결과 시각화
# 아래는, 테스트 데이터로 나온 예측 결과를 나타낸 것이다. Confusion Matrix 와 같다.
from matplotlib.colors import ListedColormap
X_set, y_set = X_test, y_test
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.figure(figsize=[10,7])
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Classifier (Test set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()

 

  • 학습에 사용된 데이터를 그래프화
# 학습 데이터 결과 시각화
from matplotlib.colors import ListedColormap
X_set, y_set = X_train, y_train
X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() - 1, stop = X_set[:, 0].max() + 1, step = 0.01),
                     np.arange(start = X_set[:, 1].min() - 1, stop = X_set[:, 1].max() + 1, step = 0.01))
plt.figure(figsize=[10,7])
plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(), X1.max())
plt.ylim(X2.min(), X2.max())
for i, j in enumerate(np.unique(y_set)):
    plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],
                c = ListedColormap(('red', 'green'))(i), label = j)
plt.title('Logistic Regression (Training set)')
plt.xlabel('Age')
plt.ylabel('Estimated Salary')
plt.legend()
plt.show()

 

  • 분류 결과표 그래프화


신규 고객의 구매 여부 예측해보기

  • 연봉 27500 달러, 나이 34살

 

1. 새로운 데이터 생성

 

2. 인공지능이 학습 할 수 있게 2차원 배열로 변경

 

3. 피처 스케일링 진행

  • 주의 : 인공지능을 만들때 사용한 인코더 사용
  • 결과 값이 실수형이기 때문에 형변환을 하지 않아도 됨

 

4. 구매 예측(예측값) 확인

  • classifier : 이전 글에서 만들어두었던 로지스틱 회귀 인공지능 모델
  • predict : 결과를 예측하는 함수, 즉 인공지능에게 예측값 묻기
  • 결과값 0 : 구매하지 않는다고 예측

 

반응형