AI 이론/Classification (supervised)

[머신러닝] Logistic Regression

jasonshin 2021. 11. 24. 17:51

분류에 사용한다. (Classification)

예) 나이대별로 이메일을 클릭해서 열지 말지를 분류해 보자.

이메일 클릭을 할 사람과 안할 사람으로 분류할 것이다.

빨간점이 바로 데이터이며,

액션의 0 과 1 이 바로 레이블이다.

레이블이 있다는것은, 수퍼바이저드 러닝 이라는 뜻

이렇게 비슷하게 생긴 함수가 이미존재한다. 이름은 sigmoid function

따라서 리니어 리그레션 식을, y 값을 시그모이드에 대입해서, 일차방정식으로 만들면 다음과 같아진다.

위와 같은 식을 가진 regression 을, Logistic Regression이라 한다.

Type Markdown and LaTeX: 𝛼2

 

이제 우리는, 이를 가지고 두개의 클래스로 분류할 수 있다. ( 클릭을 한다, 안한다 두개로.)

확률로 나타낼 수 있게 되었다.

p는 확률값을 나타낸다.

 

20대는 클릭할 확률이 0.7%, 40대는 85%, 50대는 99.4%

이 확률값은, 위에서의 시그모이드 함수를 적용한 식을 통해 나온 값임을 기억한다.

최종 예측값은, 0.5를 기준으로 두개의 부류로 나눈다. 그 값은 0 과 1 이다.

Type Markdown and LaTeX: 𝛼2

 

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

 

# 나이와 연봉으로 분석해서, 물건을 구매할지 안할지를 분류하자!!

 

# 로지스틱 리그레션은 피처스케일링을 하자. 

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

X = scaler.fit_transform(X)

 

# Train / Test용 데이터 만들자. 

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)

 

# 모델링, 분류의 문제이므로 분류의 문제 해결할 수 있는 인공지능으로 모델링 한다.

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(random_state=3)

classifier.fit(X_train, y_train)

LogisticRegression(random_state=3)

# 성능평가 ,테스트한다.

y_pred = classifier.predict(X_test)

y_test

376    0
16     1
365    1
82     0
107    0
      ..
246    0
10     0
115    0
74     0
194    0
Name: Purchased, Length: 80, dtype: int64

y_pred

array([1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,
       0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,
       1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,
       1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int64)

 

반응형