엔드 투 엔드 Machine Learning
Joshua Stapleton
Machine Learning Engineer
일반 정확도:
예시:
# 양성 99, 음성 1의 불균형 데이터에서 ~99% 정확도 달성
for patient_datapoint in heart_disease_dataset:
model.prediction(patient_datapoint) = 'positive'
진양성(TP)
위양성(FP)
위음성(FN)
진음성(TN)
from sklearn.metrics import balanced_accuracy_score
# y_test는 실제 레이블, y_pred는 예측 레이블
y_pred = model.predict(X_test)
bal_accuracy = balanced_accuracy_score(y_test, y_pred)
print(f"Balanced Accuracy: {bal_accuracy:.2f}")
Balanced Accuracy: 0.85

교차 검증
k-겹 교차 검증

사용법:
from sklearn.model_selection import cross_val_score, KFold # 데이터를 10개 동일 부분으로 분할 kfold = KFold(n_splits=5, shuffle=True, random_state=42)# 주어진 모델의 교차 검증 정확도 계산 cv_results = cross_val_score(model, heart_disease_X, heart_disease_y, cv=kfold, scoring='balanced_accuracy')
하이퍼파라미터:
# 테스트할 하이퍼파라미터
C_values = [0.001, 0.01, 0.1, 1, 10, 100, 1000]
# 하이퍼파라미터 수동 반복
for C in C_values:
model = LogisticRegression(max_iter=200, C=C)
model.fit(X_train, y_train)
accuracy = cross_val_score(model, X, y, cv=kfold, scoring='balanced_accuracy')
print(f"C = {C}: Bal Acc: {accuracy.mean():.4f} (+/- {accuracy.std():.4f})")
하이퍼파라미터 튜닝 예시 출력:
C = 0.001: Bal Acc: 0.6200 (+/- 0.0215)
C = 0.01: Bal Acc: 0.7325 (+/- 0.0234)
C = 0.1: Bal Acc: 0.7923 (+/- 0.0202)
C = 1: Bal Acc: 0.8050 (+/- 0.0191)
C = 10: Bal Acc: 0.8034 (+/- 0.0185)
C = 100: Bal Acc: 0.8021 (+/- 0.0187)
C = 1000: Bal Acc: 0.8017 (+/- 0.0188)
엔드 투 엔드 Machine Learning