Визначте оптимальний коефіцієнт штрафу L1
Тепер ви налаштуєте параметр C для регуляризації L1, щоб знайти значення, яке зменшує складність моделі й водночас зберігає хороші показники якості. Ви запустите цикл for по можливих значеннях C, для кожного створите екземпляр логістичної регресії та обчислите метрики якості.
Створено список C з можливими значеннями. Масив l1_metrics зібрано з 3 стовпців: перший містить значення C, наступні два — заповнювачі для кількості ненульових коефіцієнтів і значення recall моделі. Масштабовані ознаки та цільові змінні завантажено як train_X, train_Y для тренування та test_X, test_Y для тестування.
Бібліотеки numpy і pandas завантажено як np і pd, а також функцію recall_score із sklearn.
Ця вправа є частиною курсу
Machine Learning для маркетингу в Python
Інструкції до вправи
- Запустіть цикл
forу діапазоні від 0 до довжини спискуC. - Для кожного кандидата
Cініціалізуйте та навчіть Logistic Regression і спрогнозуйте відтік на тестових даних. - Для кожного кандидата
Cзбережіть кількість ненульових коефіцієнтів і значення recall у другому та третьому стовпцяхl1_metrics. - Створіть датафрейм
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=___))