Xác định hệ số phạt L1 tối ưu
Bây giờ bạn sẽ tinh chỉnh tham số C cho L1 regularization để tìm giá trị giúp giảm độ phức tạp mô hình mà vẫn duy trì các chỉ số hiệu năng tốt. Bạn sẽ chạy một vòng lặp for qua các giá trị C khả dĩ, xây dựng các mô hình logistic regression tương ứng và tính các chỉ số hiệu năng.
Một list C đã được tạo với các giá trị khả dĩ. Mảng l1_metrics được tạo với 3 cột: cột đầu là các giá trị C, hai cột sau là chỗ giữ chỗ cho số lượng hệ số khác 0 và điểm recall của mô hình. Các đặc trưng đã được chuẩn hóa và biến mục tiêu đã được nạp thành train_X, train_Y cho huấn luyện, và test_X, test_Y cho kiểm tra.
Cả numpy và pandas đã được nạp lần lượt là np và pd, cùng với hàm recall_score từ sklearn.
Bài tập này là một phần của khóa học
Machine Learning cho Marketing với Python
Hướng dẫn bài tập
- Chạy vòng lặp
fortrên phạm vi từ 0 đến độ dài của listC. - Với mỗi ứng viên
C, khởi tạo và fit Logistic Regression, rồi dự đoán churn trên dữ liệu kiểm tra. - Với mỗi ứng viên
C, lưu số lượng hệ số khác 0 và điểm recall vào cột thứ hai và thứ ba củal1_metrics. - Tạo một
pandasDataFrame từl1_metricsvới các tên cột phù hợp.
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.
# 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=___))