ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Selecione apenas os hosts ruins de X_train para formar um novo conjunto de dados, X_train_bad. Note que y_train é um array Booleano.
  • Calcule a média da coluna unique_ports para os hosts ruins e salve em avg_bad_ports.
  • Agora considere um classificador que prevê positivo para todo exemplo cujo unique_ports excede avg_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, ____))
Editar e executar o código