Zacznij terazZacznij za darmo

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

Zobacz kurs

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, ____))
Edytuj i uruchom kod