[혼공머신] 3주차 미션🔥(기본미션) 04-1. 로지스틱 회귀

sujinzzang수진짱·2022년 7월 24일
0

복습

훈련 세트, 테스트 세트 나누기

  • train_test_split
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(fish_input, fish_target), random_state = 42)

훈련 세트, 테스트 세트 표준화 전처리

  • StandardScaler
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
ss.fit(train_input)
train_scaled = ss.transform(train_input)
test_scaled = ss.transform(test_input)
  • 훈련세트 값으로 fit한 후, 훈련세트와 테스트 세트를 transform한다.

K-최근접 이웃 분류

  • KNeighborsClassifier
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier(n_neighbors = 3)
kn.fit(train_scaled, train_target)
print(kn.score(train_scaled, train_target))
print(kn.score(test_scaled, test_target))

다중분류

다중분류: 타깃 데이터에 2개 이상의 클래스가 포함된 문제

로지스틱 회귀

로지스틱 회귀는 이름은 회귀이지만 분류 모델이다.
선형 회귀와 동일하게 선형 방정식을 학습힌다.

시그모이드 함수(로지스틱 함수)

선형 방정식을 학습한 값 z는 어떤 값도 가능하다.
확률이 되려면 0~1사이 값이 되어야 한다.
아주 큰 음수일 때 0, 아주 큰 양수일 때 1이되도록 바꾸는 함수가 시그모이드 함수.

이진 분류

predict_proba() 음성 클래스와 양성 클래스에 대한 확률 출력
decision_fuction() 양성 클래스에 대한 z 값 계산
coef_, intercept_ 로지스틱 모델이 학습한 선형 방정식의 계수가 들어 있다.

마무리

키워드

  • 로지스틱 회귀
    선형 방정식을 사용한 분류 알고리즘. 선형 회귀와 달리 시그모이드 함수나 소프트맥스 함수를 사용하여 클래스 확률을 출력할 수 있다.
  • 다중분류
    타깃 클래스가 2개 이상인 분류 문제. 로지스틱 회귀는 다중 분류를 위해 소프트맥스 함수를 사용하여 클래스를 예측한다.
  • 시그모이드 함수
    선형 방정식의 출력을 0과 1사이의 값으로 압축하여 이진 분류를 위해 사용한다.
  • 소프트맥스 함수
    다중 분류에서 선형 방정식의 출력 결과를 정규화하여 합이 1이 되도록 만든다.

핵심 패키지와 함수

LogisticRegression

  • 선형 분류 알고리즘인 로지스틱 회귀를 위한 클래스
  • 규제: L2 규제(릿지 방식), L1 규제(라쏘 방식). 디폴트는 l2
  • 규제 강도 : C. 기본값은 1.0. 값이 작을수록 규제가 강하다.

predict_proba()

  • 예측 확률을 반환.
  • 이진 분류의 경우에는 샘플마다 음성 클래스와 양성 클래스에 대한 확률을 반환
  • 다중 분류의 경우에는 샘플마다 모든 클래스에 대한 확률을 반환.
lr.predict_proba(test_scaled[:5])

decision_function()

  • 모델이 학습한 선형 방정식의 출력을 반환
  • 이진 분류의 경우 양성 클래스의 확률이 반환된다.
    값이 0보다 크면 양성 클래스, 작거나 같으면 음성 클래스로 예측
  • 다중 분류의 경우 각 클래스마다 선형 방정식을 계산한다. 가장 큰 값의 클래스가 예측 클래스가 된다.
lr.decision_function(train_bream_smelt[:5])

확인 문제

  1. 2개보다 많은 클래스가 있는 분류 문제는?
    -> 다중 분류

  2. 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는?
    -> 시그모이드 함수

로지스틱 회귀가 이진 분류하기 위해 선형 방정식을 학습해서 나온 값,
z는 어떤 값도 가능하다. 
확률을 출력하려면 0~1사이의 값으로 바꿔줘야 하는데 
시그모이드 함수는 아주 작은 음수는 0, 아주 큰 양수는 1로 바꿀 수 있다.
  1. decision_function() 메서드의 출력이 0일 때 시그모이드 함수의 값은?
    -> 0.5

0개의 댓글