Implementando regressão logística
Este exercício é muito parecido com o anterior, em que você implementou regressão linear “do zero” usando scipy.optimize.minimize. Porém, desta vez vamos minimizar a perda logística e comparar com o LogisticRegression do scikit-learn (definimos C como um valor alto para desativar a regularização; falaremos mais sobre isso no Capítulo 3!).
A função log_loss() do exercício anterior já está definida no seu ambiente, e o conjunto de dados de previsão de câncer de mama do sklearn (primeiras 10 features, padronizadas) está carregado nas variáveis X e y.
Este exercício faz parte do curso
Classificadores Lineares em Python
Instruções do exercício
- Passe o número de exemplos de treino para
range(). - Preencha a função de perda para regressão logística.
- Compare os coeficientes com o
LogisticRegressiondo sklearn.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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_)