CommencerCommencer 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

Concevoir des workflows de Machine Learning en Python

Afficher le cours

Instructions

  • 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 cet exemple de code.

# 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