实现 logistic 回归
这与之前使用 scipy.optimize.minimize "从零实现"线性回归的练习非常相似。不过这一次,我们将最小化 logistic 损失,并与 scikit-learn 的 LogisticRegression 进行比较(我们将 C 设为一个很大的值以关闭正则化;第 3 章会详细说明!)。
上一个练习中的 log_loss() 函数已在您的环境中定义好,且 sklearn 的乳腺癌预测数据集(前 10 个特征,已标准化)已加载到变量 X 和 y 中。
本练习是课程的一部分
Python 中的线性分类器
练习说明
- 将训练样本数量输入到
range()中。 - 填写 logistic 回归的损失函数。
- 将系数与 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_)