Zamiana heurystyki w klasyfikator
Odkrycie, że heurystyki mogą być tak użyteczne, jest zaskakujące. Postanawiasz zatem potraktować heurystykę „zbyt wiele unikalnych portów wzbudza podejrzenie" jako samodzielny klasyfikator. W tym celu wyznaczysz próg na podstawie średniej liczby unikalnych portów używanych przez złe komputery źródłowe – czyli takie, dla których etykieta wynosi True. Zbiór danych jest już wczytany i podzielony na dane treningowe i testowe, więc w pamięci masz obiekty X_train, X_test, y_train i y_test. Dostępne importy obejmują accuracy_score() oraz numpy jako np. Pamiętaj: w tym ćwiczeniu nie korzystasz z gotowego klasyfikatora scikit-learn – zamiast tego jawnie definiujesz własną regułę klasyfikacji!
To ćwiczenie jest częścią kursu
Projektowanie przepływów pracy uczenia maszynowego w Pythonie
Instrukcje do ćwiczenia
- Wybierz z
X_trainwszystkie złe hosty i zapisz je jako nowy zbiór danychX_train_bad. Zwróć uwagę, żey_trainjest tablicą wartości logicznych (Boolean). - Oblicz średnią kolumny
unique_portsdla złych hostów i zapisz wynik w zmiennejavg_bad_ports. - Zdefiniuj klasyfikator, który przewiduje klasę pozytywną dla każdego przykładu, którego wartość
unique_portsprzekraczaavg_bad_ports. Zapisz predykcje tego klasyfikatora dla danych testowych w nowej zmiennejpred_port. - Oblicz dokładność tego klasyfikatora na danych testowych, używając
accuracy_score().
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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, ____))