Feature engineering op gegroepeerde data
Je bouwt nu voort op de vorige oefening met één extra feature: het aantal unieke protocollen dat door elke broncomputer wordt gebruikt. Met gegroepeerde data kun je features altijd op deze manier samenstellen: neem het aantal unieke elementen van alle categorische kolommen en het gemiddelde van alle numerieke kolommen als startpunt. Zoals eerder zijn flows al ingeladen, heb je cross_val_score() om nauwkeurigheid te meten, AdaBoostClassifier(), en pandas als pd en numpy als np beschikbaar.
Deze oefening maakt deel uit van de cursus
Machine Learning-workflows ontwerpen in Python
Oefeninstructies
- Pas een
lambda-functie toe op de meegeleverde groepiterator om het aantal unieke protocollen per broncomputer te berekenen. Je kuntset()gebruiken om de kolomprotocolte reduceren tot een set unieke waarden. - Zet het resultaat om naar een data frame met de juiste vorm door een index op te geven en de kolom
protocolte noemen. - Concateneer het nieuwe data frame met het oude, dat beschikbaar is als
X. - Beoordeel de nauwkeurigheid van
AdaBoostClassifier()op deze nieuwe gegevensset metcross_val_score().
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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)))