[머신러닝] Logistic Regression
분류에 사용한다. (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)