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, c'est suspect » comme un classifieur à part entière. Pour y arriver, vous appliquez un seuil au nombre de ports uniques par source en utilisant la moyenne observée chez les ordinateurs source malveillants — ceux pour lesquels l'étiquette est True. L'ensemble de données est déjà 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 importations incluent accuracy_score() et numpy sous le nom np. Précision : vous n'allez pas entraîner un classifieur de scikit-learn dans cet exercice; vous allez plutôt définir explicitement votre propre règle de classification !
Cette activité fait partie du cours
Concevoir des flux de travail Machine Learning en Python
Instructions de l’exercice
- Sous-sélectionnez tous les hôtes malveillants de
X_trainpour former un nouvel ensemble 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 enregistrez-la dansavg_bad_ports. - Considérez maintenant un classifieur qui prédit positif tout exemple dont la valeur
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 justesse de ce classifieur sur les données de test avec
accuracy_score().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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, ____))