정확도(Accuracy) 계산하기
[실습5]의 결과를 바탕으로 분류 성능에 간단하면서도 중요한 정확도를 계산하여 모델의 성능을 판별해보겠습니다.
이번 실습에서는 학습용 데이터와 평가용 데이터의 정확도를 계산하고 그 성능을 비교해보겠습니다.
정확도 계산을 위한 사이킷런 함수/라이브러리
- DTmodel.score(train_X, train_Y)
: train_X 데이터에 대한 정확도(accuracy) 값을 계산합니다.
데이터 정보
load_breast_cancer 유방암 유무 판별 데이터를 불러오는 함수
- X(Feature 데이터) : 30개의 환자 데이터
- Y(Label 데이터) : 0 음성(악성), 1 양성(정상)
지시사항
- score를 사용하여 train_X에 대한 정확도를 계산하여 acc_train에 저장해봅시다.
- 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 |