LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Wähle aus X_train alle schlechten Hosts aus und bilde daraus einen neuen Datensatz X_train_bad. Beachte, dass y_train ein Boolesches Array ist.
  • Berechne den Durchschnitt der Spalte unique_ports für schlechte Hosts und speichere ihn in avg_bad_ports.
  • Betrachte nun einen Klassifikator, der jedes Beispiel als positiv vorhersagt, dessen unique_ports avg_bad_ports übersteigen. Speichere die Vorhersagen dieses Klassifikators auf den Testdaten in einer neuen Variablen pred_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, ____))
Code bearbeiten und ausführen