Menu
CoddyTech

Repaso: prueba de detección

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 26 de 58.

challenge icon

Desafío

Intermedio

¿Recuerdas la celda de casos no detectados con la que empezó este capítulo? Una clínica analiza muestras de tejido para detectar cáncer, y no detectar una muestra maligna es el peor error. El programa lee la sensibilidad que necesita la clínica; el código inicial carga y escala las muestras (1 significa maligno) y enumera los thresholds, empezando por el más estricto.

  1. Entrena una regresión logística e imprime su AUC.
  2. Encuentra el primer umbral cuya sensibilidad alcanza el valor necesario.
  3. En ese umbral, imprime los recuentos y la precisión, como se muestra a continuación.

Para otra clínica y 0.9:

AUC: 0.981
Threshold: 0.4
Caught 47 of 51 malignant samples
False alarms: 2
Precision: 0.959

Pruébalo tú mismo

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

# La sensibilidad que necesita la clínica, como 0.95
needed = float(input())

# Muestras de tejido: 1 en y significa maligno, el caso que el cribado debe detectar
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)

# Umbrales que se probarán, empezando por el más estricto
thresholds = [0.5, 0.4, 0.3, 0.2, 0.1, 0.05]

# Escribe tu código a continuación

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online