Hantera brus i etiketter
En av dina cyberanalytiker informerar dig om att många av etiketterna för de första 100 källdatorerna i dina träningsdata kan vara felaktiga på grund av ett databasfel. Hon hoppas att du ändå kan använda datan eftersom de flesta etiketter fortfarande är korrekta, men ber dig behandla dessa 100 etiketter som "brusiga". Som tur är vet du hur man hanterar det – med hjälp av viktad inlärning. Den kontaminerade datan finns tillgänglig i din arbetsyta som X_train, X_test, y_train_noisy, y_test. Du vill undersöka om du kan förbättra prestandan hos en GaussianNB()-klassificerare med viktad inlärning. Du kan använda den valfria parametern sample_weight, som stöds av .fit()-metoden i de flesta populära klassificerare. Funktionen accuracy_score() är förinstallerad. Se bilden nedan för vägledning.

Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Anpassa en instans av
GaussianNB()till träningsdata med de kontaminerade etiketterna. - Rapportera dess noggrannhet på testdata med hjälp av
accuracy_score(). - Skapa vikter som ger de faktiska etiketterna dubbelt så stor vikt som de brusiga etiketterna. Tänk på att vikterna gäller träningsdata.
- Anpassa klassificeraren på nytt med ovanstående vikter och rapportera dess noggrannhet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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, ____))