Radzenie sobie z zaszumionymi etykietami
Jeden z twoich analityków ds. cyberbezpieczeństwa informuje cię, że wiele etykiet dla pierwszych 100 komputerów źródłowych w zbiorze treningowym może być błędnych z powodu awarii bazy danych. Ma nadzieję, że dane nadal można wykorzystać – większość etykiet jest poprawna – ale prosi, żebyś potraktował te 100 etykiet jako „zaszumione". Na szczęście wiesz, jak sobie z tym poradzić, stosując ważone uczenie. Skażone dane są dostępne w twoim środowisku jako X_train, X_test, y_train_noisy, y_test. Sprawdź, czy za pomocą ważonego uczenia możesz poprawić wyniki klasyfikatora GaussianNB(). Możesz użyć opcjonalnego parametru sample_weight, obsługiwanego przez metodę .fit() większości popularnych klasyfikatorów. Funkcja accuracy_score() jest już wczytana. Skorzystaj z poniższego obrazka jako wskazówki.

To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Dopasuj instancję
GaussianNB()do danych treningowych z zaszumionymi etykietami. - Sprawdź jej dokładność na danych testowych, używając
accuracy_score(). - Utwórz wagi przypisujące etykietom uznawanych za pewne (ground truth) dwukrotnie większą wagę niż etykietom zaszumionym. Pamiętaj, że wagi dotyczą danych treningowych.
- Ponownie dopasuj klasyfikator z użyciem powyższych wag i sprawdź jego dokładność.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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, ____))