Identificar o coeficiente ótimo de penalidade L1
Agora você vai ajustar o parâmetro C para a regularização L1 para encontrar aquele que reduz a complexidade do modelo enquanto mantém boas métricas de desempenho. Você vai executar um loop for pelos possíveis valores de C e criar instâncias de regressão logística para cada um, além de calcular as métricas de desempenho.
Uma lista C foi criada com os valores possíveis. A matriz l1_metrics foi construída com 3 colunas: a primeira contém os valores de C, e as duas seguintes são espaços reservados para a contagem de coeficientes não nulos e para a métrica de recall do modelo. As variáveis de recursos escalonados e alvo foram carregadas como train_X, train_Y para treinamento, e test_X, test_Y para teste.
Tanto numpy quanto pandas estão carregados como np e pd, assim como a função recall_score de sklearn.
Este exercício faz parte do curso
Machine Learning para Marketing em Python
Instruções do exercício
- Execute um loop
forno intervalo de 0 até o tamanho da listaC. - Para cada candidato
C, inicialize e ajuste uma Regressão Logística e preveja churn nos dados de teste. - Para cada candidato
C, armazene os coeficientes não nulos e o recall na segunda e terceira colunas del1_metrics. - Crie um DataFrame do
pandasa partir del1_metricscom os nomes de colunas apropriados.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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=___))