CommencerCommencez gratuitement

Feature engineering sur des données groupées

Vous allez maintenant poursuivre l’exercice précédent en ajoutant une caractéristique : le nombre de protocoles uniques utilisés par chaque ordinateur source. Notez qu’avec des données groupées, il est toujours possible de construire des caractéristiques de cette manière : commencez par le nombre d’éléments uniques pour toutes les colonnes catégorielles, et la moyenne pour toutes les colonnes numériques. Comme précédemment, flows est préchargé, cross_val_score() permet de mesurer la précision, AdaBoostClassifier(), pandas en tant que pd et numpy en tant que np sont disponibles.

Cet exercice fait partie du cours

<cours>Concevoir des workflows de Machine Learning en Python</cours>
Voir le cours

Instructions de l’exercice

  • Appliquez une fonction lambda à l’itérateur de groupes fourni, pour calculer le nombre de protocoles uniques utilisés par chaque ordinateur source. Vous pouvez utiliser set() pour réduire la colonne protocol à un ensemble de valeurs uniques.
  • Convertissez le résultat en DataFrame avec la bonne forme en fournissant un index et en nommant la colonne protocol.
  • Concaténez le nouveau DataFrame avec l’ancien, disponible sous le nom X.
  • Évaluez la précision de AdaBoostClassifier() sur ce nouveau jeu de données à l’aide de cross_val_score().

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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)))
Modifier et exécuter le code