ComenzarEmpieza gratis

Convertir una heurística en un clasificador

Te sorprende lo útiles que pueden ser las heurísticas. Así que decides tratar la heurística de que "demasiados puertos únicos es sospechoso" como un clasificador en sí mismo. Lo consigues estableciendo un umbral al número de puertos únicos por origen usando la media del número usado en los equipos de origen malos —aquellos para los que la etiqueta es True. El conjunto de datos ya está precargado y dividido en entrenamiento y prueba, así que tienes en memoria los objetos X_train, X_test, y_train y y_test. Tus importaciones incluyen accuracy_score() y numpy como np. Para aclarar: en este ejercicio no vas a ajustar un clasificador de scikit-learn, sino que vas a definir explícitamente tu propia regla de clasificación.

Este ejercicio forma parte del curso

Diseño de flujos de trabajo de Machine Learning en Python

Ver curso

Instrucciones del ejercicio

  • Filtra todos los hosts malos de X_train para formar un nuevo conjunto de datos X_train_bad. Ten en cuenta que y_train es un array booleano.
  • Calcula la media de la columna unique_ports para los hosts malos y guárdala en avg_bad_ports.
  • Considera ahora un clasificador que predice positivo todo ejemplo cuyo unique_ports supere avg_bad_ports. Guarda las predicciones de este clasificador sobre los datos de prueba en una nueva variable, pred_port.
  • Calcula la exactitud de este clasificador en los datos de prueba usando accuracy_score().

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código