Eine Heuristik in einen Klassifikator verwandeln
Du bist überrascht, wie hilfreich Heuristiken sein können. Also behandelst du die Heuristik „zu viele eindeutige Ports sind verdächtig“ als eigenständigen Klassifikator. Das erreichst du, indem du die Anzahl der eindeutigen Ports pro Quelle anhand des Durchschnitts der von schlechten Quellrechnern verwendeten Ports schwellwertest – das sind Rechner, für die das Label True ist. Der Datensatz ist vorab geladen und in Training und Test aufgeteilt, sodass die Objekte X_train, X_test, y_train und y_test im Speicher liegen. Deine Imports enthalten accuracy_score() und numpy als np. Zur Klarstellung: In dieser Übung trainierst du keinen Klassifikator aus scikit-learn, sondern definierst deine eigene Klassifikationsregel explizit!
Diese Übung ist Teil des Kurses
Machine-Learning-Workflows in Python entwerfen
Anleitung zur Übung
- Wähle aus
X_trainalle schlechten Hosts aus und bilde daraus einen neuen DatensatzX_train_bad. Beachte, dassy_trainein Boolesches Array ist. - Berechne den Durchschnitt der Spalte
unique_portsfür schlechte Hosts und speichere ihn inavg_bad_ports. - Betrachte nun einen Klassifikator, der jedes Beispiel als positiv vorhersagt, dessen
unique_portsavg_bad_portsübersteigen. Speichere die Vorhersagen dieses Klassifikators auf den Testdaten in einer neuen Variablenpred_port. - Berechne die Genauigkeit dieses Klassifikators auf den Testdaten mit
accuracy_score().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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, ____))