การ Implement Logistic Regression
แบบฝึกหัดนี้คล้ายกับแบบฝึกหัดก่อนหน้าที่ implement linear regression "จากศูนย์" โดยใช้ scipy.optimize.minimize แต่คราวนี้จะ minimize logistic loss และเปรียบเทียบกับ LogisticRegression ของ scikit-learn (เราตั้งค่า C ไว้สูงเพื่อปิดการ regularization ซึ่งจะอธิบายเพิ่มเติมในบทที่ 3!)
ฟังก์ชัน log_loss() จากแบบฝึกหัดที่แล้วถูกกำหนดไว้ในสภาพแวดล้อมของคุณแล้ว และชุดข้อมูล breast cancer prediction ของ sklearn (10 features แรก ซึ่งผ่านการทำ standardization แล้ว) ถูกโหลดไว้ในตัวแปร X และ y
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Linear Classifiers ใน Python
คำแนะนำการฝึกหัด
- ป้อนจำนวนตัวอย่างข้อมูลในชุดฝึกลงใน
range() - กำหนด loss function สำหรับ logistic regression
- เปรียบเทียบค่าสัมประสิทธิ์กับ
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_)