1. 학습 데이터의 일부를 분할하여 검증하는 방법
모델의 성능을 평가할 때에는, 이미 정답(target)이 존재하는 학습 데이터 내에서 일부를 분리시켜 검증데이터로 활용하는 방법을 사용합니다.
보통은 전체 학습 데이터에서 20%~30%를 검증데이터로 분리하여 사용합니다.
2.Scikit-learn을 이용한 모델 성능 평가
2.1 데이터 불러오기
import pandas as pd
import copy
train_diabets = pd.read_csv('train_diabets.csv')
display(train_diabets.head())
display("train_diabets 데이터셋 크기:", len(train_diabets) )
2.2 검증데이터 분할 : 검증 데이터는 전체 데이터 중 25% 사용
from sklearn.model_selection import train_test_split
# 특성과 타겟 변수 분리
train_x = train_diabets.drop(['ID','Outcome'], axis=1)
train_y = train_diabets['Outcome']
# 학습 데이터와 검증 데이터로 분리
X_train, X_val, y_train, y_val = train_test_split(train_x, train_y, test_size=0.25, random_state=42)
# 분리된 데이터의 크기 확인
display("분할 후의 학습 데이터셋 크기:", X_train.shape )
display("분할 후의 검증 데이터셋 크기:", X_val.shape )
2.3 분할한 검증 데이터 제외하고 학습
from sklearn.tree import DecisionTreeClassifier
# Decision Tree 모델 생성 및 학습
clf_diabets = DecisionTreeClassifier(random_state=42)
clf_diabets.fit(X_train, y_train)
# 모델을 사용하여 검증 데이터에 대한 예측 수행
y_pred = clf_diabets.predict(X_val)
print("첫 10개의 예측 데이터 :", y_pred[:10])
첫 10개의 예측 데이터 : [0 0 1 0 0 1 0 0 1 1]
2.4 분할한 검증 데이터셋 대상 성능 검증
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score
accuracy_diabets_DT = accuracy_score(y_val, y_pred)
precision_diabets_DT = precision_score(y_val, y_pred)
recall_diabets_DT = recall_score(y_val, y_pred)
f1_score_diabets_DT = f1_score(y_val, y_pred)
display(f"Accuracy:{accuracy_diabets_DT}")
display(f"precision:{precision_diabets_DT}")
display(f"recall: {recall_diabets_DT}")
display(f"f1_score: {f1_score_diabets_DT}")
'머신러닝 > 머신러닝: 입문 개념' 카테고리의 다른 글
로그 변환(Log transform) (0) | 2024.12.05 |
---|---|
데이터 표준화(StandardScaler) (0) | 2024.12.04 |
모델학습과 예측 (0) | 2024.12.01 |
분류(Classification) (3) | 2024.11.30 |
회귀분석 (0) | 2024.11.29 |