개발학습일지

[AI] 머신 러닝 LogisticRegressiond의 Confusion Matrix 성능 평가, 시본(seaborn)으로 분류 결과표 만들기 본문

AI/Machine Learning

[AI] 머신 러닝 LogisticRegressiond의 Confusion Matrix 성능 평가, 시본(seaborn)으로 분류 결과표 만들기

처카푸 2024. 4. 15. 15:14

시작하기 전 임폴트 라이브러리!

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sb

이번 포스팅에서 사용 할 데이터 df

df = pd.read_csv('Social_Network_Ads.csv')
df.head()

 

전 포스팅 내용 =============================

1. 데이터에 NaN이 있는지 확인해야한다

2. X와 y 값 분리해주기

3. 로지스틱 리그레션은 피처 스케일링을 해주어야 한다

4. 인공지능에 넣어 줄 train과 test를 만들어주자

5. 모델링을 선택하여 인공지능 만들어서 값 예측하기

==========================================

이번 포스팅

전 포스팅에서 만든 인공지능 Confusion Matrix 오차 검증, 성능평가

y_pred = classifier.predict(X_test)
y_pred
>>>
    array([0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1,
           1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
           1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1,
           0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
           0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0], dtype=int64)

 

1. 예측한 y 와 정답인 y를 데이터 프레임으로 만들어 눈으로 비교하는 방법

y_pred = classifier.predict(X_test)
df_test = y_test.to_frame()
df_test['y_pred'] = y_pred
df_test

 

2. Confusion Matrix 분류결과표로 확인하는 방법

- 해당 분야에 따라 필요로 하는 정확도, 정밀도, 적중율 부분을 확인하고 오차를 줄여 나간다

- 분류 결과표를 위한 라이브러리

from sklearn.metrics import confusion_matrix

- confusion_matrix(실제데이터, 예측한 것) 사용

cm = confusion_matrix(y_test, y_pred)
cm
>>>
    array([[52,  6],
           [14, 28]], dtype=int64)

- 정확도 계산하기 : accuracy

(52 + 28) / cm.sum()

- 정확도 계산 라이브러리, 임폴트  accuracy_score, classification_report

from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred)
# 0.8
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
>>>
                  precision    recall  f1-score   support

               0       0.79      0.90      0.84        58
               1       0.82      0.67      0.74        42

        accuracy                           0.80       100
       macro avg       0.81      0.78      0.79       100
    weighted avg       0.80      0.80      0.80       100

 

3. 시본 heatmap 으로 Confusion Matrix 분류 결과표 보기

import seaborn as sb
sb.heatmap(data=cm, cmap='RdPu', annot= True)
plt.show()