Feature Engineering auf gruppierten Daten
Du knüpfst jetzt an die vorherige Übung an und berücksichtigst ein zusätzliches Feature: die Anzahl der unterschiedlichen Protokolle, die jeder Quellrechner verwendet. Beachte: Bei gruppierten Daten kannst du Features immer auf diese Weise konstruieren – nimm die Anzahl der einzigartigen Werte aller kategorialen Spalten und den Mittelwert aller numerischen Spalten als Ausgangspunkt. Wie zuvor sind flows vorab geladen, cross_val_score() zur Messung der Genauigkeit, AdaBoostClassifier(), pandas als pd und numpy als np verfügbar.
Diese Übung ist Teil des Kurses
Machine-Learning-Workflows in Python entwerfen
Anleitung zur Übung
- Wende eine
lambda-Funktion auf den bereitgestellten Gruppen-Iterator an, um die Anzahl der unterschiedlichen Protokolle zu berechnen, die jeder Quellrechner verwendet. Du kannstset()nutzen, um die Spalteprotocolauf die Menge ihrer einzigartigen Werte zu reduzieren. - Wandle das Ergebnis in einen DataFrame mit der richtigen Form um, indem du einen Index angibst und die Spalte
protocolnennst. - Konkateniere den neuen DataFrame mit dem alten, der als
Xverfügbar ist. - Beurteile die Genauigkeit von
AdaBoostClassifier()auf diesem neuen Datensatz mitcross_val_score().
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)))