Menu
CoddyTech

Riepilogo: test di screening

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 26 di 58.

challenge icon

Sfida

Medio

Ricordi la cella dei casi mancati con cui si è aperto questo capitolo? Una clinica esegue lo screening di campioni di tessuto per individuare il cancro, e un campione maligno non rilevato è l'errore peggiore. Il programma legge il richiamo di cui la clinica ha bisogno; il codice iniziale carica e normalizza i campioni (1 significa maligno) ed elenca thresholds, dal più restrittivo al meno restrittivo.

  1. Addestra una regressione logistica e stampa il suo AUC.
  2. Trova la prima soglia il cui richiamo raggiunge il valore richiesto.
  3. A quella soglia, stampa i conteggi e la precisione come sotto.

Per un'altra clinica e 0.9:

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

Provalo tu

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

# Il valore di recall richiesto dalla clinica, ad esempio 0.95
needed = float(input())

# Campioni di tessuto: 1 in y indica un caso maligno, che lo screening deve individuare
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)

# Soglie da provare, dalla più restrittiva
thresholds = [0.5, 0.4, 0.3, 0.2, 0.1, 0.05]

# Scrivi il tuo codice qui sotto

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online