최적의 L1 패널티 계수 식별하기
이제 L1 정규화를 위한 C 파라미터를 튜닝해, 모델 복잡도를 낮추면서도 성능 지표를 잘 유지하는 값을 찾아볼 거예요. 가능한 C 값들에 대해 for 루프를 실행하면서 각 값으로 로지스틱 회귀 모델을 만들고, 성능 지표를 계산합니다.
가능한 값이 담긴 리스트 C가 준비되어 있어요. 배열 l1_metrics는 3개 열로 구성되어 있으며, 첫 번째 열은 C 값, 다음 두 열은 0이 아닌 계수의 개수와 모델의 재현율(recall) 점수를 위한 자리입니다. 스케일링된 피처와 타깃 변수는 학습용 train_X, train_Y, 테스트용 test_X, test_Y로 로드되어 있습니다.
numpy와 pandas는 각각 np, pd로 임포트되어 있고, sklearn의 recall_score 함수도 불러와져 있어요.
이 연습은 강의의 일부입니다
Python으로 배우는 마케팅용 Machine Learning
연습 안내
- 리스트
C의 길이 0부터len(C)까지 범위로for루프를 실행하세요. - 각
C후보에 대해 로지스틱 회귀를 초기화하고 학습한 뒤, 테스트 데이터에서 이탈(churn)을 예측하세요. - 각
C후보에 대해 0이 아닌 계수의 개수와 재현율(recall) 점수를l1_metrics의 두 번째와 세 번째 열에 저장하세요. l1_metrics로부터 적절한 열 이름을 사용해pandasDataFrame을 만드세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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=___))