Tự triển khai logistic regression
Bài này rất giống với bài trước đó nơi bạn tự triển khai linear regression “từ đầu” bằng scipy.optimize.minimize. Nhưng lần này, chúng ta sẽ tối thiểu hóa logistic loss và so sánh với LogisticRegression của scikit-learn (chúng tôi đặt C là một giá trị lớn để tắt regularization; sẽ nói kỹ hơn ở Chương 3!).
Hàm log_loss() từ bài trước đã được định nghĩa sẵn trong môi trường của bạn, và bộ dữ liệu dự đoán ung thư vú của sklearn (10 đặc trưng đầu tiên, đã chuẩn hóa) đã được nạp vào biến X và y.
Bài tập này là một phần của khóa học
Bộ phân loại tuyến tính với Python
Hướng dẫn bài tập
- Truyền số lượng mẫu huấn luyện vào
range(). - Điền hàm loss cho logistic regression.
- So sánh các hệ số với
LogisticRegressioncủa sklearn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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_)