>>> 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와 구분하는 모델의 절편입니다.

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