본문 바로가기

머신러닝

로지스틱 회귀(Logistic Regression)

반응형

 안녕하세요 '코딩 오페라'블로그를 운영하고 있는 저는 'Conducter'입니다.

오늘 알아볼 내용은 로지스틱 회귀(Logistic Regression)입니다.

 

 

로지스틱 회귀(Logistic Regression) 

 로지스틱 회귀(Logistic Regression)는 회귀를 이용하여 데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측하고 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류해주는 지도 학습 알고리즘입니다.

 

 예를들어 나이와 보험유무를 알수 있는 데이터가 있다고 해봅시다. 선형회귀 를 사용하면 아래와 같은 그래프가 그려집니다. 실제 데이터는 y값은 0에서 1인 반면 예측된 모델은 -무한대에서 +무한대 까지인것을 알 수 있습니다.  

선형 회귀

 

 그럼 로지스틱 회귀를 사용하면 어떨까요? 아래 그림은 로지스틱 회귀를 사용하여 학습한 그래프입니다.  이제야 예측 모델이 확률 0에서 1사이에 있고 실제 값과도 더욱 잘 맞는것을 알 수 있습니다. 이러한 이유로 로지스틱 회귀를 사용합니다. 

로지스틱 회귀

 

Sigmoid Function(시그모이드 함수)

 로지스틱 회귀에서 가장 많이 사용하는 함수로, 0부터 1까지의 확률을 가능하게 해주는 함수 입니다.

Sigmoid Function(시그모이드 함수)은 다음과 같이 생겼습니다. 

 

$$sigmoid(z) = \frac{1}{1 + e^{-z}}$$

 

 

 지금부터는 예제를 통해 로지스틱 회귀(Logistic Regression)를 알아보도록 합시다. 

 

우선 필요한 라이브러리를 불러와줍니다.

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#머신러닝 분석에 유용한 라이브러리
from sklearn.linear_model import LogisticRegression
#LogisticRegression: 시그모이드 함수
from sklearn.model_selection import train_test_split

 

 

그 다음 나이에 따른 보험유무 데이터를 불러줍니다. 

 

df = pd.read_csv('insurance_data.csv')

 

insurance_data.csv
insurance_data.csv
0.00MB

 

 

train_test_split함수를 사용하여 Test data와 Train data를 분리해줍니다. 아래 코드의 경우 Test data = 10%, Train data = 90%입니다. 

 

X_train, X_test, y_train, y_test = train_test_split(df[['age']], df.bought_insurance, test_size = 0.1)

 

 

로지스틱 회귀(Logistic Regression)로 모델을 만들어주고 Train data로 모델을 학습시켜줍니다. 

 

model = LogisticRegression()
model.fit(X_train, y_train)

 

 

그 다음 '.predict'함수를 이용하여 값을 예측해주고, 최종적으로 '.score'함수를 통해 모델이 잘 맞는지 확인해줍니다.  이 경우 score이 '1' 즉 100%로 상당히 잘 학습된것을 알 수 있습니다.

 

model.predict(X_test)

 

model.score(X_test, y_test)

 

오늘은 '로지스틱 회귀(Logistic Regression)'에 대해 알아보았습니다. 도움이 되셨나요? 만약 되셨다면 구독 및 좋아요로 표현해 주시면 정말 많은 힘이 됩니다. 저는 '코딩 오페라' 'Conductor'였습니다. 감사합니다.

 

 

<출처 및 참고 : 위키백과, code basics>

반응형