Bắt đầu ngayBắt đầu miễn phí

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 Xy.

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

Xem khóa học

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 LogisticRegression củ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_)
Chỉnh sửa và Chạy Mã