Omvandla en heuristik till en klassificerare
Du förvånas över hur användbara heuristiker kan vara. Därför bestämmer du dig för att behandla heuristiken "för många unika portar är misstänkt" som en klassificerare i sig. Du uppnår detta genom att tröskvärda antalet unika portar per källa mot det genomsnittliga antalet som används i dåliga källdatorer – det vill säga datorer vars etikett är True. Datamängden är förladdad och uppdelad i träning och test, så du har objekten X_train, X_test, y_train och y_test i minnet. Dina importer inkluderar accuracy_score() och numpy som np. Observera att du inte ska anpassa en klassificerare från scikit-learn i den här övningen – i stället definierar du din egen klassificeringsregel explicit!
Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Välj ut alla dåliga värdar från
X_trainför att skapa en ny datamängd,X_train_bad. Observera atty_trainär en boolesk array. - Beräkna medelvärdet av kolumnen
unique_portsför dåliga värdar och lagra det iavg_bad_ports. - Definiera nu en klassificerare som förutsäger positivt för varje exempel vars
unique_portsöverstigeravg_bad_ports. Spara klassificerarens förutsägelser på testdata i en ny variabel,pred_port. - Beräkna klassificerarens noggrannhet på testdata med hjälp av
accuracy_score().
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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, ____))