Feature engineering su dati raggruppati
Ora farai un passo avanti rispetto all’esercizio precedente, considerando una feature aggiuntiva: il numero di protocolli unici utilizzati da ciascun computer sorgente. Nota che con dati raggruppati è sempre possibile costruire feature in questo modo: puoi prendere il numero di elementi unici di tutte le colonne categoriche e la media di tutte le colonne numeriche come punto di partenza. Come prima, hai flows precaricato, cross_val_score() per misurare l’accuratezza, AdaBoostClassifier(), pandas come pd e numpy come np.
Questo esercizio fa parte del corso
Progettare workflow di Machine Learning in Python
Istruzioni dell'esercizio
- Applica una funzione
lambdasull’iteratore dei gruppi fornito per calcolare il numero di protocolli unici utilizzati da ciascun computer sorgente. Puoi usareset()per ridurre la colonnaprotocola un insieme di valori unici. - Converti il risultato in un data frame con la forma corretta fornendo un indice e assegnando alla colonna il nome
protocol. - Concatena il nuovo data frame con quello precedente, disponibile come
X. - Valuta l’accuratezza di
AdaBoostClassifier()su questo nuovo insieme di dati usandocross_val_score().
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Create a feature counting unique protocols per source
protocols = flows.groupby('source_computer').apply(
lambda df: ____)
# Convert this feature into a dataframe, naming the column
protocols_DF = pd.DataFrame(
protocols, index=____, columns=____)
# Now concatenate this feature with the previous dataset, X
X_more = pd.concat([X, ____], axis=____)
# Refit the classifier and report its accuracy
print(____(____(
AdaBoostClassifier(), ____, y)))