ระบุค่าสัมประสิทธิ์ L1 penalty ที่เหมาะสมที่สุด
ในแบบฝึกหัดนี้ จะได้ปรับจูนพารามิเตอร์ C สำหรับ L1 regularization เพื่อหาค่าที่ช่วยลดความซับซ้อนของโมเดล ขณะที่ยังคงรักษาประสิทธิภาพที่ดีอยู่ โดยจะวนลูป for ผ่านค่า C ที่เป็นไปได้ และสร้าง Logistic Regression สำหรับแต่ละค่า พร้อมคำนวณ performance metrics
ได้เตรียมลิสต์ C ที่มีค่าที่เป็นไปได้ไว้แล้ว อาร์เรย์ l1_metrics ถูกสร้างขึ้นโดยมี 3 คอลัมน์ ได้แก่ คอลัมน์แรกคือค่า C ส่วนอีกสองคอลัมน์เป็น placeholder สำหรับจำนวนสัมประสิทธิ์ที่ไม่เป็นศูนย์ และ recall score ของโมเดล ฟีเจอร์และตัวแปรเป้าหมายที่ผ่านการ scale แล้วถูกโหลดไว้เป็น train_X, train_Y สำหรับการเทรน และ test_X, test_Y สำหรับการทดสอบ
ทั้ง numpy และ pandas ถูกโหลดไว้เป็น np และ pd พร้อมกับฟังก์ชัน recall_score จาก sklearn
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning สำหรับการตลาดด้วย Python
คำแนะนำการฝึกหัด
- วนลูป
forผ่านช่วงตั้งแต่ 0 จนถึงความยาวของลิสต์C - สำหรับค่า
Cแต่ละตัว ให้สร้างและ fit Logistic Regression จากนั้นพยากรณ์ churn บนข้อมูลทดสอบ - สำหรับค่า
Cแต่ละตัว ให้เก็บจำนวนสัมประสิทธิ์ที่ไม่เป็นศูนย์และ recall score ไว้ในคอลัมน์ที่สองและสามของl1_metrics - สร้าง DataFrame ของ
pandasจากl1_metricsพร้อมระบุชื่อคอลัมน์ให้ถูกต้อง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Run a for loop over the range of C list length
for index in ___(0, len(C)):
# Initialize and fit Logistic Regression with the C candidate
logreg = ___(penalty='l1', C=C[___], solver='liblinear')
logreg.fit(___, train_Y)
# Predict churn on the testing data
pred_test_Y = logreg.___(test_X)
# Create non-zero count and recall score columns
l1_metrics[index,1] = np.___(logreg.coef_)
l1_metrics[index,2] = recall_score(___, pred_test_Y)
# Name the columns and print the array as pandas DataFrame
col_names = ['C','Non-Zero Coeffs','Recall']
print(pd.DataFrame(l1_metrics, columns=___))