Ź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
Instrukcje do ćwiczenia
- Utwórz ramkę danych, w której każdy wiersz jest wektorem cech dla komputera
source_computer. Pogrupuj dane ze zbioruflowswedł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_computernależy do dostarczonej listybad. - Oceń działanie
AdaBoostClassifier()na tych danych, używająccross_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)))