더북(TheBook)

사이킷런에서 L1 규제를 지원하는 모델은 penalty 매개변수를 'l1'으로 지정하여 희소한 모델을 만들 수 있습니다.

>>> from sklearn.linear_model import LogisticRegression
>>> LogisticRegression(solver='liblinear', penalty='l1')

'lbfgs'는 L1 규제를 지원하지 않기 때문에 다른 알고리즘을 선택해야 합니다(예를 들어 'liblinear').16 표준화 전처리된 Wine 데이터에 L1 규제가 있는 로지스틱 회귀를 적용하면 다음과 같은 희소한 모델을 만듭니다.

>>> lr = LogisticRegression(solver='liblinear', penalty='l1',
                            C=1.0, random_state=1)
# C=1.0이 기본입니다
# 규제 효과를 높이거나 낮추려면 C 값을 증가시키거나 감소시킵니다
>>> lr.fit(X_train_std, y_train)
>>> print(... 정확도:', lr.score(X_train_std, y_train))
훈련 정확도: 1.0
>>> print('테스트 정확도:', lr.score(X_test_std, y_test))
테스트 정확도: 1.0

훈련과 테스트 정확도(둘 다 100%)를 보면 모델이 두 데이터셋에 완벽하게 작동한다는 것을 알 수 있습니다. lr.intercept_ 속성으로 절편을 확인해 보면 세 개의 값이 들어 있는 배열이 반환됩니다.

>>> lr.intercept_
array([-1.26392152, -1.21596534, -2.37040177])

 

 


16 역주 LogisticRegression 클래스의 solver'lbfgs', 'newton-cg', 'sag'는 L2 규제만 지원합니다. 'saga', 'liblinear'는 L1, L2 규제를 모두 지원합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.