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
Istruzioni dell'esercizio
- Sotto-seleziona tutti gli host malevoli da
X_trainper formare un nuovo insieme di datiX_train_bad. Nota chey_trainè un array booleano. - Calcola la media della colonna
unique_portsper gli host malevoli e salvala inavg_bad_ports. - Considera ora un classificatore che predice positivo ogni esempio il cui
unique_portssuperaavg_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, ____))