Ist die Quelle oder das Ziel schlecht?
In der letzten Lektion hast du den Zielrechner (destination) als deine relevante Entität verwendet. Deine Cybersecurity-Analystin hat dir jedoch gerade gesagt, dass die infizierten Maschinen den schädlichen Traffic erzeugen und daher im Datensatz flows als source, nicht als Ziel, erscheinen.
Die Daten flows sind vorab geladen, ebenso die Liste bad mit infizierten IDs und der Feature-Extraktor featurizer() aus der letzten Lektion. Außerdem stehen dir numpy als np, AdaBoostClassifier() und cross_val_score() zur Verfügung.
Diese Übung ist Teil des Kurses
Machine-Learning-Workflows in Python entwerfen
Anleitung zur Übung
- Erstelle einen DataFrame, in dem jede Zeile ein Feature-Vektor für einen
source_computerist. Gruppliere im Datensatzflowsnach der ID des Quellrechners und wende den Feature-Extraktor auf jede Gruppe an. - Wandle den Iterator in einen DataFrame um, indem du
list()darauf anwendest. - Erstelle Labels, indem du prüfst, ob jede
source_computer-ID in der gegebenen Liste der infizierten Rechner enthalten ist. - Beurteile einen
AdaBoostClassifier()auf diesen Daten mithilfe voncross_val_score().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)))