복습: 선별 검사
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 26번째.
챌린지
중급이 장의 첫머리에서 다뤘던 놓친 사례 셀을 기억하나요? 한 병원에서 조직 샘플로 암 검사를 하는데, 악성 샘플을 놓치는 것이 가장 큰 실수입니다. 프로그램은 병원에서 필요한 재현율을 읽어 오고, 시작 코드는 샘플을 불러와 스케일링한 다음(1은 악성을 의미) 가장 엄격한 것부터 thresholds를 나열합니다.
- 로지스틱 회귀 모델을 학습시키고 AUC를 출력하세요.
- 필요한 재현율에 도달하는 첫 번째 임계값을 찾으세요.
- 해당 임계값에서 아래와 같이 개수와 정밀도를 출력하세요.
다른 병원에서 0.9를 입력하는 경우:
AUC: 0.981
Threshold: 0.4
Caught 47 of 51 malignant samples
False alarms: 2
Precision: 0.959직접 해보기
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score, recall_score, precision_score, confusion_matrix
# 클리닉에서 필요한 재현율, 예: 0.95
needed = float(input())
# 조직 샘플: y에서 1은 악성을 의미하며, 검사에서 반드시 찾아내야 하는 경우입니다
cancer = load_breast_cancer()
X = cancer.data
y = 1 - cancer.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 시도할 임계값, 가장 엄격한 것부터
thresholds = [0.5, 0.4, 0.3, 0.2, 0.1, 0.05]
# 아래에 코드를 작성하세요
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러