È la sorgente o la destinazione a essere compromessa?
Nella lezione precedente hai usato il computer di destinazione come entità di interesse. Tuttavia, la tua analista di cybersecurity ti ha appena detto che sono le macchine infette a generare il traffico malevolo e quindi compaiono come sorgente, non come destinazione, nel dataset flows.
I dati flows sono già stati caricati, così come la lista bad degli ID infetti e l'estrattore di feature featurizer() dalla lezione precedente. Hai anche numpy disponibile come np, AdaBoostClassifier() e cross_val_score().
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Crea un data frame in cui ogni riga è un vettore di feature per un
source_computer. Fai il group by per ID del computer sorgente nel datasetflowse applica l'estrattore di feature a ciascun gruppo. - Converti l'iteratore in un data frame chiamando
list()su di esso. - Crea le etichette verificando se ciascun ID di
source_computerappartiene alla lista dei “cattivi” che ti è stata fornita. - Valuta un
AdaBoostClassifier()su questi dati usandocross_val_score().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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)))