시작하기무료로 시작하기

최적의 L1 패널티 계수 식별하기

이제 L1 정규화를 위한 C 파라미터를 튜닝해, 모델 복잡도를 낮추면서도 성능 지표를 잘 유지하는 값을 찾아볼 거예요. 가능한 C 값들에 대해 for 루프를 실행하면서 각 값으로 로지스틱 회귀 모델을 만들고, 성능 지표를 계산합니다.

가능한 값이 담긴 리스트 C가 준비되어 있어요. 배열 l1_metrics는 3개 열로 구성되어 있으며, 첫 번째 열은 C 값, 다음 두 열은 0이 아닌 계수의 개수와 모델의 재현율(recall) 점수를 위한 자리입니다. 스케일링된 피처와 타깃 변수는 학습용 train_X, train_Y, 테스트용 test_X, test_Y로 로드되어 있습니다.

numpypandas는 각각 np, pd로 임포트되어 있고, sklearnrecall_score 함수도 불러와져 있어요.

이 연습은 강의의 일부입니다

Python으로 배우는 마케팅용 Machine Learning

강의 보기

연습 안내

  • 리스트 C의 길이 0부터 len(C)까지 범위로 for 루프를 실행하세요.
  • C 후보에 대해 로지스틱 회귀를 초기화하고 학습한 뒤, 테스트 데이터에서 이탈(churn)을 예측하세요.
  • C 후보에 대해 0이 아닌 계수의 개수와 재현율(recall) 점수를 l1_metrics의 두 번째와 세 번째 열에 저장하세요.
  • l1_metrics로부터 적절한 열 이름을 사용해 pandas DataFrame을 만드세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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=___))
코드 편집 및 실행