ROC 곡선
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 25번째.
각 임계값은 각각의 재현율과 오탐을 만듭니다. ROC 곡선은 이를 모두 한 번에 보여 줍니다:
가로축: 위양성률, 즉 건강한 환자 중 양성으로 분류된 비율입니다. 세로축: 재현율. 임계값을 낮추면 (1, 1) 쪽으로 올라갑니다.
from sklearn.metrics import roc_curve, roc_auc_score
proba = model.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, proba) # tpr은 재현율이다
ax.plot(fpr, tpr)
print(f"{roc_auc_score(y_test, proba):.3f}")이 값은 곡선 아래 면적인 AUC, 즉 0.914를 출력합니다. 1은 완벽한 값이고, 0.5는 동전 던지기와 같습니다. 곡선이 높을수록 같은 오탐 수에서 더 많은 것을 잡아냅니다.
챌린지
중급벚나무 농장에서는 서리가 내릴 수 있는 밤에 서리 방지용 불을 피웁니다. 시작 코드에서는 두 가지 서리 모델인 logistic과 knn을 학습시키고 차트를 설정합니다.
draw_roc(model, name)을 작성하세요. 이 함수는ax에 모델의 ROC 곡선을 그리고,name을 레이블로 표시하며, 아래와 같이 AUC를 출력합니다.- 두 모델에 대해 함수를 호출하고,
coin toss라고 레이블을 붙인 점선 대각선과 범례를 추가한 다음 차트를 표시하세요.
산사태 모델의 경우:
logistic AUC: 0.869
k-NN AUC: 0.924그런 다음 Coddy가 차트를 설명합니다. Coddy의 차트는 다음과 같습니다.
직접 해보기
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import roc_curve, roc_auc_score
# 벚나무 농장의 봄철 밤마다 한 행씩 기록: frost의 1은 새벽이 오기 전에 서리가 내렸음을 의미합니다
nights = pd.read_csv("frost.csv")
features = ["temp_6pm_c", "humidity_pct", "wind_kmh", "cloud_pct"]
X_train, X_test, y_train, y_test = train_test_split(
nights[features], nights["frost"], test_size=0.25, random_state=0, stratify=nights["frost"])
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 서리 예측 모델 두 개
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train, y_train)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
fig, ax = plt.subplots()
ax.set_title("Frost Warnings")
ax.set_xlabel("False positive rate")
ax.set_ylabel("Recall")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러