머신러닝&딥러닝/Do it ! 딥러닝 입문

사이킷런으로 로지스틱 회귀 수행하기

욱이명 2020. 12. 2. 21:44

사이킷런의 경사 하강법이 구현된 클래스는 SGDClassifier이다. 이 클래스는 로지스틱 회귀 문제 외에도 여러 가지 문제에 경사 하강법을 적용할 수 있다.

 

사이킷런으로 경사 하강법 적용

SDGClassifier 클래스에 로지스틱 회귀를 적용하려면 loss 매개변수에 손실 함수로 log를 지정한다.

max_iter 매개변수를 통해 반복 횟수를 100으로 지정하고 반복 실행했을 때 결과를 동일하게 재현하기 위해 random_state를 통해 난수 초깃값을 42로 설정한다. 반복할 때마다 로지스틱 손실 함수의 값이 tol에 지정한 값만큼 감소되지 않으면 반복을 중단하도록 설정한다. 만약 tol의 값을 설정하지 않으면 max_iter의 값을 늘리라는 경고가 발생하는데 이는 모델의 로지스틱 손실 함수의 값이 최적값으로 수렴할 정도로 충분한 반복 횟수를 입력했는지 사용자에게 알려주므로 유용하다.

 

사이킷런의 SGDClassifier 클래스에는 지금까지 이전글에서 직접 구현한 메서드가 비슷한 이름으로 이미 준비되어 있다. fit() 메서드로 훈련하고 score() 메서드로 정확도를 계산하면 된다.

마찬가지로 SGDClassifier 클래스에는 예측을 위한 predict() 메서드도 구현되어 있다. 예시를 위해 테스트 세트에 대한 예측을 만들어보겠다. 이때 주의할 점은 사이킷런은 입력 데이터로 2차원 배열만 받아들인다. 즉, 샘플 하나를 주입하더라도 2차원 배열로 만들어야 한다. 여기서는 배열의 슬라이싱을 사용해 테스트 세트에서 10개의 샘플만 뽑아 예측을 만들어 보겠다.