Implementação da regressão logística

Isso é muito semelhante ao exercício anterior, em que você implementou a regressão linear "do zero" usando o site scipy.optimize.minimize. No entanto, desta vez, minimizaremos a perda logística e compararemos com o LogisticRegression do scikit-learn (definimos C como um valor grande 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 sklearn (10 primeiros recursos, padronizados) é carregado nas variáveis X e y.

Este exercício faz parte do curso

Classificadores lineares em Python

Ver Curso

Instruções de exercício

  • Insira o número de exemplos de treinamento em range().
  • Preencha a função de perda para a regressão logística.
  • Compare os coeficientes com os do sklearn LogisticRegression.

Exercício interativo prático

Experimente este exercício preenchendo 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_)