Определение оптимального коэффициента L1-регуляризации
Теперь вы подберёте параметр C для L1-регуляризации, чтобы найти значение, которое снижает сложность модели, не ухудшая при этом её метрики качества. Вы запустите цикл for по возможным значениям C, на каждом шаге строя логистическую регрессию и вычисляя метрики производительности.
Список C с возможными значениями уже создан. Массив l1_metrics содержит 3 столбца: первый — значения C, второй и третий — заглушки для количества ненулевых коэффициентов и значения полноты модели. Масштабированные признаки и целевые переменные загружены как train_X, train_Y для обучения и test_X, test_Y для тестирования.
Библиотеки numpy и pandas загружены как np и pd, а также импортирована функция recall_score из sklearn.
Это упражнение является частью курса
Машинное обучение для маркетинга на Python
Инструкции к упражнению
- Запустите цикл
forпо диапазону от 0 до длины спискаC. - Для каждого значения
Cинициализируйте и обучите логистическую регрессию, затем предскажите отток клиентов на тестовых данных. - Для каждого значения
Cсохраните количество ненулевых коэффициентов и значение полноты во втором и третьем столбцах массиваl1_metrics. - Создайте из массива
l1_metricsобъект DataFrame библиотекиpandasс соответствующими именами столбцов.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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=___))