Combinare euristiche
Un altro analista di cybersecurity ti dice che, durante alcuni tipi di attacco, il computer sorgente infetto invia piccole quantità di traffico per evitare di essere rilevato. Questo ti fa pensare che potrebbe essere meglio creare un'euristica combinata che cerchi contemporaneamente un alto numero di porte e dimensioni dei pacchetti ridotte. Migliora le prestazioni rispetto alla semplice euristica sulle porte? Come nel precedente esercizio, hai in memoria X_train, X_test, y_train e y_test. Il codice d'esempio ti aiuta anche a riprodurre il risultato dell'euristica sulle porte, pred_port. Hai anche numpy come np e accuracy_score() già caricati.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- La colonna
average_packetcalcola la dimensione media dei pacchetti su tutti i flussi osservati da una singola sorgente. Calcola la media di quei valori solo per le sorgenti malevole nel training set. - Ora costruisci una nuova regola che contrassegni come positivi tutte le sorgenti la cui media del traffico è inferiore al valore sopra.
- Combina le regole in modo che entrambe le euristiche si applichino contemporaneamente, usando un'appropriata operazione aritmetica.
- Riporta l'accuratezza dell'euristica combinata.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Compute the mean of average_packet for bad sources
avg_bad_packet = np.mean(____[____]['average_packet'])
# Label as positive if average_packet is lower than that
pred_packet = ____[____] < avg_bad_packet
# Find indices where pred_port and pred_packet both True
pred_port = X_test['unique_ports'] > avg_bad_ports
pred_both = pred_packet ____ pred_port
# Ports only produced an accuracy of 0.919. Is this better?
print(accuracy_score(____, ____))