Aplicación de la regresión logística

Este ejercicio es muy similar al anterior, en el que implementó la regresión lineal "desde cero" utilizando scipy.optimize.minimize. Sin embargo, esta vez minimizaremos la pérdida logística y compararemos con LogisticRegression de scikit-learn (hemos establecido C a un valor grande para desactivar la regularización; ¡más sobre esto en el Capítulo 3!).

La función log_loss() del ejercicio anterior ya está definida en su entorno, y el conjunto de datos de predicción del cáncer de mama sklearn (10 primeras características, estandarizadas) se carga en las variables X y y.

Este ejercicio forma parte del curso

Clasificadores lineales en Python

Ver curso

Instrucciones de ejercicio

  • Introduzca el número de ejemplos de entrenamiento en range().
  • Rellene la función de pérdida para la regresión logística.
  • Compare los coeficientes con los de sklearn LogisticRegression.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# The logistic loss, summed over training examples
def my_loss(w):
    s = 0
    for i in range(____):
        raw_model_output = w@X[i]
        s = s + ____(raw_model_output * y[i])
    return s

# Returns the w that makes my_loss(w) smallest
w_fit = minimize(my_loss, X[0]).x
print(w_fit)

# Compare with scikit-learn's LogisticRegression
lr = LogisticRegression(fit_intercept=False, C=1000000).fit(X,y)
print(lr.coef_)