Aan de slagGa gratis aan de slag

Van een heuristiek een classifier maken

Je bent verrast dat heuristieken zo nuttig kunnen zijn. Daarom besluit je de heuristiek dat "te veel unieke poorten verdacht is" te behandelen als een volwaardige classifier. Dat doe je door het aantal unieke poorten per bron te thresholden met het gemiddelde aantal dat wordt gebruikt door slechte broncomputers — dat zijn computers waarvoor het label True is. De gegevensset is al ingeladen en gesplitst in training en test, dus je hebt de objecten X_train, X_test, y_train en y_test in het geheugen. Je imports bevatten accuracy_score() en numpy als np. Ter verduidelijking: je gaat in deze oefening geen classifier uit scikit-learn fitten, maar je definieert expliciet je eigen classificatieregel!

Deze oefening maakt deel uit van de cursus

Machine Learning-workflows ontwerpen in Python

Cursus bekijken

Oefeninstructies

  • Selecteer alle slechte hosts uit X_train om een nieuwe gegevensset X_train_bad te vormen. Let op: y_train is een Booleaanse array.
  • Bereken het gemiddelde van de kolom unique_ports voor slechte hosts en sla dit op in avg_bad_ports.
  • Beschouw nu een classifier die elk voorbeeld als positief voorspelt waarvan unique_ports groter is dan avg_bad_ports. Sla de voorspellingen van deze classifier op de testdata op in een nieuwe variabele pred_port.
  • Bereken de nauwkeurigheid van deze classifier op de testdata met accuracy_score().

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren