Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Pas een lambda-functie toe op de meegeleverde groepiterator om het aantal unieke protocollen per broncomputer te berekenen. Je kunt set() gebruiken om de kolom protocol te 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 protocol te noemen.
  • Concateneer het nieuwe data frame met het oude, dat beschikbaar is als X.
  • Beoordeel de nauwkeurigheid van AdaBoostClassifier() op deze nieuwe gegevensset met cross_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)))
Code bewerken en uitvoeren