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
Instrucciones del ejercicio
- Filtra todos los hosts malos de
X_trainpara formar un nuevo conjunto de datosX_train_bad. Ten en cuenta quey_traines un array booleano. - Calcula la media de la columna
unique_portspara los hosts malos y guárdala enavg_bad_ports. - Considera ahora un clasificador que predice positivo todo ejemplo cuyo
unique_portssupereavg_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, ____))