CommencerCommencer gratuitement

Transformer une heuristique en classifieur

Vous êtes surpris de voir à quel point les heuristiques peuvent être utiles. Vous décidez donc de traiter l’heuristique selon laquelle « trop de ports uniques est suspect » comme un classifieur à part entière. Pour cela, vous appliquez un seuil au nombre de ports uniques par source, en utilisant la moyenne observée chez les ordinateurs sources malveillants — ceux pour lesquels l’étiquette est True. Le jeu de données est préchargé et séparé en entraînement et test ; vous avez donc en mémoire les objets X_train, X_test, y_train et y_test. Vos imports incluent accuracy_score() et numpy sous np. Pour clarifier : vous n’allez pas ajuster un classifieur de scikit-learn dans cet exercice ; vous allez plutôt définir explicitement votre propre règle de classification !

Cet exercice fait partie du cours

Concevoir des workflows de Machine Learning en Python

Afficher le cours

Instructions

  • Sélectionnez uniquement les hôtes malveillants depuis X_train pour former un nouveau jeu de données X_train_bad. Notez que y_train est un tableau booléen.
  • Calculez la moyenne de la colonne unique_ports pour les hôtes malveillants et stockez-la dans avg_bad_ports.
  • Considérez maintenant un classifieur qui prédit positif tout exemple dont unique_ports dépasse avg_bad_ports. Enregistrez les prédictions de ce classifieur sur les données de test dans une nouvelle variable, pred_port.
  • Calculez la précision de ce classifieur sur les données de test à l’aide de accuracy_score().

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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, ____))
Modifier et exécuter le code