Zacznij terazZacznij za darmo

Źródło czy cel – co jest zainfekowane?

W poprzedniej lekcji jako jednostkę analizy przyjmowano komputer docelowy. Tymczasem analityk ds. cyberbezpieczeństwa właśnie poinformował cię, że zainfekowane maszyny same generują podejrzany ruch – w zbiorze danych flows będą więc widoczne jako źródło, a nie cel.

Dane flows zostały wstępnie załadowane, podobnie jak lista bad zawierająca identyfikatory zainfekowanych maszyn oraz ekstraktor cech featurizer() z poprzedniej lekcji. Do dyspozycji masz również numpy jako np, AdaBoostClassifier() i cross_val_score().

To ćwiczenie jest częścią kursu

Projektowanie przepływów pracy uczenia maszynowego w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz ramkę danych, w której każdy wiersz jest wektorem cech dla komputera source_computer. Pogrupuj dane ze zbioru flows według identyfikatora komputera źródłowego i zastosuj ekstraktor cech do każdej grupy.
  • Przekształć iterator w ramkę danych, wywołując na nim funkcję list().
  • Utwórz etykiety, sprawdzając, czy identyfikator każdego source_computer należy do dostarczonej listy bad.
  • Oceń działanie AdaBoostClassifier() na tych danych, używając cross_val_score().

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Group by source computer, and apply the feature extractor
out = flows.____('source_computer').____(featurize)

# Convert the iterator to a dataframe by calling list on it
X = pd.DataFrame(____, index=____)

# Check which sources in X.index are bad to create labels
y = [x in bads for x in ____]

# Report the average accuracy of Adaboost over 3-fold CV
print(np.mean(____(____, X, y)))
Edytuj i uruchom kod