이 글은 기존 Tistory 블로그에서 옮겨온 글입니다. 원문: https://jms3084.tistory.com/22
로지스틱 회귀
데이터 준비하기
- CSV 파일을 읽을 경우 데이터프레임 형태로 저장된다.
- 데이터프레임에서 사용할 열을 입력데이터와 타깃데이터로 구분해 넘파이 배열로 변환한다.
- 분류한 입력과 타깃을 사이킷런의 train_test_split 함수를 활용하여 훈련데이터와 테스트데이터로 분할한다.
- from sklearn.model_selection import train_test_split
- 사이킷런의 standardscaler를 사용하여 훈련데이터와 테스트데이터를 전처리(표준화)해준다.
- standardscaler 객체 생성후 fit 함수로 훈련 후 transform 함수로 변환
- transform 함수로 테스트세트와 훈련세트 모두 변환해줘야 한다.
타깃데이터에 2개 이상의 클래스이 포함된 문제를 다중 분류라고 한다.
타깃값은 객체명.classes_ 속성에 저장되어 있다.
사이킷런의 분류 모델은 predict_proba()로 클래스별 확률값을 반환한다.
classes_ 속성마다의 확률값들을 반환한다.
k-최근접 이웃 분류 알고리즘은 설명하기가 복잡하다.
로지스틱 회귀
선형 방정식을 학습하는 분류 모델이다.
z = a x (특성1) + b x (특성2) + c x (특성3) + d x (특성4) + e x (특성5) + f
빨간색은 가중치(특성 1~5)이고 파란색(f)은 절편이다.
시그모이드 함수(로지스틱 함수)
z가 아주 큰 음수일경우 0이 되고 아주 큰 양수일 경우 1로 설정한다.

z가 무한한 음수일 경우 함수는 0에 근접하고, 무한한 양수일 경우 1에 근접한다는 특성이 있다.
z가 0.5보다 작거나 같은 경우 음성 클래스, 반대의 경우 양성 클래스로 판별한다.
로지스틱 회귀로 이진 분류 수행
불리언 인덱싱: 넘파이 배열의 key 값대신 True, False값으로 value 값들을 불러올 수 있다.
ex: arr[[True, False, True, True, True]]
로지스틱 회귀 모델 훈련: LogisticRegression객체 생성 후 fit 함수로 훈련 후 predict 함수로 예측
from sklearn.linear_model import LogisticRegression
로지스틱 회귀가 학습한 계수 확인하기 위해 가중치(coef_), 절편(intercept_) 확인
로지스틱 회귀로 계산한 샘플의 z값 출력시 객체.decision_function 함수 사용
decision_function에서 나온 값을 로지스틱 함수에 적용시키면 확률을 얻을 수 있다.
scipy 라이브러리에 시그모이드 함수가 존재한다.
from scipy.special import expit
expit([샘플들의 z값 리스트])
로지스틱 회귀로 다중 분류 수행
LogisticRegression 클래스의 매개변수인 max_iter 은 모델 훈련 반복횟수를 지정한다.
디폴트값은 100이다. 모델을 충분히 학습 시키고 싶을 경우 수를 늘려주면 된다.
LogisticRegression는 기본적으로 릿지 회귀와 같이 계수의 제곱(L2)을 규제한다.
규제를 제어하는 매개변수는 C 이며 디폴트 값은 1이다.
값이 작아질수록 규제가 강력해지고 값이 커질경우 규제가 약해진다.
다른 규제 매개변수인 alpha와는 반대로 작동한다.
다중분류에서 predict_proba()의 결과중에 가장 높은 확률이 예측 클래스가 된다.
다중분류는 클래스마다 z값을 하나씩 계산한다.
가장 높은 z값을 출력하는 클래스가 예측 클래스가 된다.
다중분류에서의 확률 계산시 소프트맥스 함수를 사용해 n개의 z값을 확률로 변환한다.
여러개의 선형 방정식의 출력값을 0~1사이의 값으로 압축하고 전체 합이 1이 되도록 만듬.
이 과정을 위해서 지수함수를 사용해 정규화된 지수 함수라고도 부릅니다.

사이파이에서 소프트맥스 함수 사용
from scipy.special import softmax
a = softmax([샘플들의 z값 리스트], axis = 1)
axis 매개변수는 각 행 샘플에 관해서 소프트맥스 함수 계산
Copyright 2021. 박해선 All rights reserved.