IniziaInizia gratis

Trasformare un'euristica in un classificatore

Ti sorprende quanto possano essere utili le euristiche. Decidi quindi di trattare l'euristica "troppe porte uniche sono sospette" come un classificatore a sé stante. Lo fai applicando una soglia al numero di porte uniche per sorgente, pari alla media del numero usato dai computer sorgente malevoli — quelli per cui l'etichetta è True. Il dataset è già caricato e suddiviso in training e test, quindi hai in memoria gli oggetti X_train, X_test, y_train e y_test. Gli import includono accuracy_score() e numpy come np. Per chiarezza: in questo esercizio non adatterai un classificatore di scikit-learn, ma definirai esplicitamente la tua regola di classificazione!

Questo esercizio fa parte del corso

Progettare workflow di Machine Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Sotto-seleziona tutti gli host malevoli da X_train per formare un nuovo insieme di dati X_train_bad. Nota che y_train è un array booleano.
  • Calcola la media della colonna unique_ports per gli host malevoli e salvala in avg_bad_ports.
  • Considera ora un classificatore che predice positivo ogni esempio il cui unique_ports supera avg_bad_ports. Salva le previsioni di questo classificatore sui dati di test in una nuova variabile, pred_port.
  • Calcola l'accuratezza di questo classificatore sui dati di test usando accuracy_score().

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Create a new dataset X_train_bad by subselecting bad hosts
X_train_bad = ____[____]

# Calculate the average of unique_ports in bad examples
avg_bad_ports = np.____(____['unique_ports'])

# Label as positive sources that use more ports than that
pred_port = ____['unique_ports'] > ____

# Print the accuracy of the heuristic
print(____(y_test, ____))
Modifica ed esegui il codice