ロジスティック回帰を実装する
これは、以前に scipy.optimize.minimize を使って線形回帰を「一から」実装した演習ととてもよく似ています。今回はロジスティック損失を最小化し、scikit-learn の LogisticRegression と比較します(正則化を無効にするために C を大きく設定しています。詳しくは第3章で説明します!)。
前の演習で作成した log_loss() 関数はすでに環境に定義済みで、sklearn の乳がん予測データセット(先頭10特徴量、標準化済み)が X と y に読み込まれています。
この演習はコースの一部です
Python で学ぶ線形分類器
演習の手順
range()に訓練データ数を入力します。- ロジスティック回帰の損失関数を埋めてください。
- sklearn の
LogisticRegressionと係数を比較します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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_)