ComenzarEmpieza gratis

Cómo lidiar con el ruido en las etiquetas

Una de tus analistas de ciberseguridad te informa de que muchas de las etiquetas de los primeros 100 ordenadores de origen en tus datos de entrenamiento podrían estar mal por un error de base de datos. Espera que aún puedas usar los datos porque la mayoría de las etiquetas siguen siendo correctas, pero te pide que trates esas 100 etiquetas como «ruidosas». Por suerte, sabes cómo hacerlo usando aprendizaje con pesos. Los datos contaminados están disponibles en tu espacio de trabajo como X_train, X_test, y_train_noisy, y_test. Quieres comprobar si puedes mejorar el rendimiento de un clasificador GaussianNB() usando aprendizaje con pesos. Puedes usar el parámetro opcional sample_weight, que es compatible con los métodos .fit() de la mayoría de clasificadores populares. La función accuracy_score() está precargada. Puedes consultar la imagen de abajo como guía.

Este ejercicio forma parte del curso

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

Ver curso

Instrucciones del ejercicio

  • Ajusta una instancia de GaussianNB() a los datos de entrenamiento con las etiquetas contaminadas.
  • Informa de su exactitud en los datos de prueba usando accuracy_score().
  • Crea pesos que asignen el doble de peso a las etiquetas con verdad de terreno que a las etiquetas ruidosas. Recuerda que los pesos se refieren a los datos de entrenamiento.
  • Vuelve a ajustar el clasificador usando los pesos anteriores e informa de su exactitud.

Ejercicio interactivo práctico

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

# Fit a Gaussian Naive Bayes classifier to the training data
clf = ____.____(____, y_train_noisy)

# Report its accuracy on the test data
print(accuracy_score(y_test, ____.____(X_test)))

# Assign half the weight to the first 100 noisy examples
weights = [____]*100 + [1.0]*(len(____)-100)

# Refit using weights and report accuracy. Has it improved?
clf_weights = GaussianNB().fit(X_train, y_train_noisy, ____=____)
print(accuracy_score(y_test, ____))
Editar y ejecutar código