НачатьНачать бесплатно

Реализация логистической регрессии

Это упражнение похоже на предыдущее, где вы реализовывали линейную регрессию «с нуля» с помощью scipy.optimize.minimize. Однако на этот раз мы будем минимизировать логистическую функцию потерь и сравним результат с LogisticRegression из scikit-learn (мы задали большое значение C, чтобы отключить регуляризацию; подробнее об этом — в главе 3!).

Функция log_loss() из предыдущего упражнения уже доступна в вашей среде, а набор данных sklearn для предсказания рака молочной железы (первые 10 признаков, стандартизированных) загружен в переменные X и y.

Это упражнение является частью курса

Линейные классификаторы в Python

Посмотреть курс

Инструкции к упражнению

  • Передайте количество обучающих примеров в функцию range().
  • Задайте функцию потерь для логистической регрессии.
  • Сравните коэффициенты с результатами LogisticRegression из sklearn.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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_)
Редактировать и запускать код