Реализация логистической регрессии
Это упражнение похоже на предыдущее, где вы реализовывали линейную регрессию «с нуля» с помощью 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_)