Transformando uma heurística em um classificador
Você ficou surpreso ao ver como heurísticas podem ser úteis. Por isso, decidiu tratar a heurística de que "muitas portas únicas é suspeito" como um classificador por si só. Você faz isso aplicando um limiar ao número de portas únicas por origem, usando como referência a média usada por computadores de origem ruins — aqueles para os quais o rótulo é True. O conjunto de dados já está carregado e dividido em treino e teste, então você tem os objetos X_train, X_test, y_train e y_test em memória. Seus imports incluem accuracy_score() e numpy como np. Para esclarecer: neste exercício você não vai ajustar um classificador do scikit-learn; em vez disso, vai definir explicitamente sua própria regra de classificação!
Este exercício faz parte do curso
Projetando Workflows de Machine Learning em Python
Instruções do exercício
- Selecione apenas os hosts ruins de
X_trainpara formar um novo conjunto de dados,X_train_bad. Note quey_trainé um array Booleano. - Calcule a média da coluna
unique_portspara os hosts ruins e salve emavg_bad_ports. - Agora considere um classificador que prevê positivo para todo exemplo cujo
unique_portsexcedeavg_bad_ports. Salve as previsões desse classificador nos dados de teste em uma nova variável,pred_port. - Calcule a acurácia desse classificador nos dados de teste usando
accuracy_score().
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Create a new dataset X_train_bad by subselecting bad hosts
X_train_bad = ____[____]
# Calculate the average of unique_ports in bad examples
avg_bad_ports = np.____(____['unique_ports'])
# Label as positive sources that use more ports than that
pred_port = ____['unique_ports'] > ____
# Print the accuracy of the heuristic
print(____(y_test, ____))