Engenharia de atributos em dados agrupados
Agora você vai dar continuidade ao exercício anterior, considerando um atributo adicional: o número de protocolos únicos usados por cada computador de origem. Observe que, com dados agrupados, sempre é possível construir atributos dessa forma: você pode começar tomando o número de elementos únicos de todas as colunas categóricas e a média de todas as colunas numéricas. Como antes, você tem flows pré-carregado, cross_val_score() para medir acurácia, AdaBoostClassifier(), pandas como pd e numpy como np.
Este exercício faz parte do curso
Projetando Workflows de Machine Learning em Python
Instruções do exercício
- Aplique uma função
lambdano iterador de grupos fornecido para calcular o número de protocolos únicos usados por cada computador de origem. Você pode usarset()para reduzir a colunaprotocola um conjunto de valores únicos. - Converta o resultado em um data frame com o formato correto, fornecendo um índice e nomeando a coluna como
protocol. - Concatene o novo data frame com o antigo, disponível como
X. - Avalie a acurácia de
AdaBoostClassifier()nesse novo conjunto de dados usandocross_val_score().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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)))