더북(TheBook)
>>> lr = LogisticRegression(penalty='l1',
...                         C=1.0,
...                         solver='liblinear',
...                         multi_class='ovr')
>>> # 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])

solver = 'liblinear'로 초기화한 LogisticRegression 객체를 다중 클래스 데이터셋에 적용하면 OvR(One-versus-Rest) 방식을 사용합니다. 따라서 첫 번째 절편은 클래스 1을 클래스 2·3과 구분하는 모델에 속한 것입니다. 두 번째는 클래스 2를 클래스 1·3과 구분하는 모델의 절편입니다. 세 번째는 클래스 3을 클래스 1·2와 구분하는 모델의 절편입니다.

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