CommencezCommencez gratuitement

Gérer le bruit dans les étiquettes

Une de vos analystes en cybersécurité vous informe que plusieurs étiquettes des 100 premiers ordinateurs sources dans vos données d'entraînement pourraient être erronées en raison d'une erreur de base de données. Elle espère que vous pourrez quand même utiliser les données, car la plupart des étiquettes demeurent correctes, mais elle vous demande de traiter ces 100 étiquettes comme « bruyantes ». Heureusement, vous savez comment faire grâce à l'apprentissage pondéré. Les données contaminées sont disponibles dans votre espace de travail sous X_train, X_test, y_train_noisy, y_test. Vous voulez vérifier si vous pouvez améliorer la performance d'un classificateur GaussianNB() en utilisant l'apprentissage pondéré. Vous pouvez utiliser le paramètre optionnel sample_weight, qui est pris en charge par les méthodes .fit() de la plupart des classificateurs populaires. La fonction accuracy_score() est préchargée. Vous pouvez consulter l'image ci-dessous pour vous guider.

Cette activité fait partie du cours

Concevoir des flux de travail Machine Learning en Python

Voir le cours

Instructions de l’exercice

  • Ajustez une instance de GaussianNB() aux données d'entraînement avec les étiquettes contaminées.
  • Indiquez sa justesse sur les données de test à l'aide de accuracy_score().
  • Créez des poids qui attribuent deux fois plus de poids aux étiquettes de vérité terrain qu'aux étiquettes bruyantes. Rappelez-vous que les poids concernent les données d'entraînement.
  • Réajustez le classificateur en utilisant les poids ci-dessus et indiquez sa justesse.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Fit a Gaussian Naive Bayes classifier to the training data
clf = ____.____(____, y_train_noisy)

# Report its accuracy on the test data
print(accuracy_score(y_test, ____.____(X_test)))

# Assign half the weight to the first 100 noisy examples
weights = [____]*100 + [1.0]*(len(____)-100)

# Refit using weights and report accuracy. Has it improved?
clf_weights = GaussianNB().fit(X_train, y_train_noisy, ____=____)
print(accuracy_score(y_test, ____))
Modifier et exécuter le code