교육 정보
- 교육 명: 경기미래기술학교 AI 교육
- 교육 기간: 2023.05.08 ~ 2023.10.31
- 오늘의 커리큘럼:
머신러닝
(7/17 ~ 7/28)
- 강사: 이현주, 이애리 강사님
- 강의 계획:
1. 머신러닝
ROC Curve
Logistic Regression
- 이름과는 달리 회귀 알고리즘이 아닌 분류 알고리즘
- 입력 데이터를 해당 클래스 레이블(예: 0 또는 1)에 할당하는 확률을 예측하는 분류 알고리즘 (특히 이진분류에 자주 사용)
- 확률값은 0에서 1 사이이며 임계값(threshold)를 설정하여 클래스를 구분
- 선형 회귀와 비슷하지만 확률값을 얻기위해 로지스틱 함수를 사용
ROC (Receiver operating characteristic)
from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression()
logmodel.fit(X_train, y_train)
from sklearn.metrics import roc_auc_score
y_train_pred_proba = logmodel.predict_proba(X_train)[:,1]
y_test_pred_proba = logmodel.predict_proba(X_test)[:,1]
roc_score_train = roc_auc_score(y_train, y_train_pred_proba)
roc_score_test = roc_auc_score(y_test, y_test_pred_proba)
print("roc_score_train :", roc_score_train)
print("roc_score_test :", roc_score_test)
from sklearn.metrics import roc_curve
def roc_curve_plot(y_test , pred_proba_c1):
fprs , tprs , thresholds = roc_curve(y_test , pred_proba_c1)
plt.plot(fprs , tprs, label='ROC')
plt.plot([0, 1], [0, 1], 'k--', label='Random', color='red')
start, end = plt.xlim(); plt.xticks(np.round(np.arange(start, end, 0.1),2))
plt.xlim(0,1); plt.ylim(0,1)
plt.xlabel('FPR( 1 - Sensitivity )'); plt.ylabel('TPR( Recall )')
plt.legend(); plt.show()
roc_curve_plot(y_train , y_train_pred_proba)
roc_curve_plot(y_test , y_test_pred_proba)
- predict_proba
: [클래스가 3개인 문제를 풀 경우]
출력값 [클래스 0일 확률, 클래스 1일 확률, 클래스 2일 확률]