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
Instructions
- Sélectionnez uniquement les hôtes malveillants depuis
X_trainpour former un nouveau jeu de donnéesX_train_bad. Notez quey_trainest un tableau booléen. - Calculez la moyenne de la colonne
unique_portspour les hôtes malveillants et stockez-la dansavg_bad_ports. - Considérez maintenant un classifieur qui prédit positif tout exemple dont
unique_portsdépasseavg_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, ____))