Implementar regresión logística
Esto es muy parecido al ejercicio anterior en el que implementaste una regresión lineal «desde cero» usando scipy.optimize.minimize. Sin embargo, esta vez minimizaremos la pérdida logística y la compararemos con LogisticRegression de scikit-learn (hemos establecido C en 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 tu entorno, y el conjunto de datos de predicción de cáncer de mama de sklearn (primeras 10 características, estandarizadas) está cargado en las variables X e y.
Este ejercicio forma parte del curso
Clasificadores lineales en Python
Instrucciones del ejercicio
- Introduce el número de ejemplos de entrenamiento en
range(). - Completa la función de pérdida para la regresión logística.
- Compara los coeficientes con
LogisticRegressionde sklearn.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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_)