Ingeniería de características en datos agrupados
Ahora vas a ampliar el ejercicio anterior añadiendo una característica más: el número de protocolos únicos utilizados por cada equipo de origen. Ten en cuenta que, con datos agrupados, siempre es posible construir características de esta manera: puedes tomar el número de elementos únicos de todas las columnas categóricas y la media de todas las columnas numéricas como punto de partida. Como antes, tienes flows precargado, cross_val_score() para medir la exactitud, AdaBoostClassifier(), pandas como pd y numpy como np.
Este ejercicio forma parte del curso
Diseño de flujos de trabajo de Machine Learning en Python
Instrucciones del ejercicio
- Aplica una función
lambdasobre el iterador de grupos para calcular el número de protocolos únicos utilizados por cada equipo de origen. Puedes usarset()para reducir la columnaprotocola un conjunto de valores únicos. - Convierte el resultado en un data frame con la forma correcta proporcionando un índice y nombrando la columna
protocol. - Concatena el nuevo data frame con el anterior, disponible como
X. - Evalúa la exactitud de
AdaBoostClassifier()en este nuevo conjunto de datos usandocross_val_score().
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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)))