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
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 utiliserset()pour réduire la colonneprotocolà 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 decross_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)))