ML

정확도(Accuracy) 계산하기

Haribo- 2022. 11. 24. 20:31

정확도(Accuracy) 계산하기

[실습5]의 결과를 바탕으로 분류 성능에 간단하면서도 중요한 정확도를 계산하여 모델의 성능을 판별해보겠습니다.

이번 실습에서는 학습용 데이터와 평가용 데이터의 정확도를 계산하고 그 성능을 비교해보겠습니다.


정확도 계산을 위한 사이킷런 함수/라이브러리

  • DTmodel.score(train_X, train_Y)
    : train_X 데이터에 대한 정확도(accuracy) 값을 계산합니다.

데이터 정보

load_breast_cancer 유방암 유무 판별 데이터를 불러오는 함수

  • X(Feature 데이터) : 30개의 환자 데이터
  • Y(Label 데이터) : 0 음성(악성), 1 양성(정상)
 

지시사항

  1. score를 사용하여 train_X에 대한 정확도를 계산하여 acc_train에 저장해봅시다.
  2. score를 사용하여 test_X에 대한 정확도를 계산하여 acc_test에 저장해봅시다.

Tips!

accuracy_score(Y_true, Y_pred)을 이용하여 정확도를 구할 수 있습니다. Y_true,Y_pred는 각각 실제값과 예측값을 의미합니다.

 

import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix

 

# sklearn에 저장된 데이터를 불러 옵니다.
X, Y = load_breast_cancer(return_X_y = True)
X = np.array(X)
Y = np.array(Y)

 

# 학습용 평가용 데이터로 분리합니다
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2, random_state = 42)

 

# 분리된 데이터 정보를 출력합니다
print('학습용 샘플 개수: ',len(train_Y))
print('클래스 0인 학습용 샘플 개수: ',len(train_Y)-sum(train_Y))
print('클래스 1인 학습용 샘플 개수: ',sum(train_Y),'\n')

 

print('평가용 샘플 개수: ',len(test_Y))
print('클래스 0인 평가용 샘플 개수: ',len(test_Y)-sum(test_Y))
print('클래스 1인 평가용 샘플 개수: ',sum(test_Y),'\n')

 

# DTmodel에 의사결정나무 모델을 초기화 하고 학습합니다
DTmodel = DecisionTreeClassifier()
DTmodel.fit(train_X, train_Y)



# 예측한 값을 저장합니다
y_pred_train = DTmodel.predict(train_X)
y_pred_test = DTmodel.predict(test_X)

 

# 혼동 행렬을 계산합니다
cm_train = confusion_matrix(train_Y, y_pred_train)
cm_test = confusion_matrix(test_Y, y_pred_test)
print('train_X Confusion Matrix : \n {}'.format(cm_train))
print('test_X Confusion Matrix : \n {}'.format(cm_test))

 

"""
1. 정확도를 계산합니다.
"""
acc_train = DTmodel.score(train_X, train_Y) # score() 함수를 활용하여 정확도를 계산합니다.
acc_test = DTmodel.score(test_X, test_Y)

 

# 정확도를 출력합니다.
print('train_X Accuracy: %f' % (acc_train))
print('test_X Accuracy: %f' % (acc_test))

학습용 샘플 개수:  455
클래스 0인 학습용 샘플 개수:  169
클래스 1인 학습용 샘플 개수:  286 

평가용 샘플 개수:  114
클래스 0인 평가용 샘플 개수:  43
클래스 1인 평가용 샘플 개수:  71 

train_X Confusion Matrix : 
 [[169   0]
 [  0 286]]
test_X Confusion Matrix : 
 [[39  4]
 [ 3 68]]
train_X Accuracy: 1.000000
test_X Accuracy: 0.938596

'ML' 카테고리의 다른 글

ML 타이타닉  (0) 2022.11.26
혼동 행렬(Confusion matrix)  (0) 2022.11.24
간단한 의사결정나무 만들기  (0) 2022.11.24
sklearn을 사용한 의사결정나무 - 데이터 전 처리  (0) 2022.11.24
회귀 알고리즘 평가 지표 - R2  (0) 2022.11.24