Logistic Regression
분류에 사용한다.
( Classification )
ex) 나이대별로 이메일을 클릭해서 열지 말지를 분류해 보자

이메일 클릭을 할 사람과 안할 사람으로 분류 할 것이다.
빨간점이 바로 데이터이며,
액션의 0과 1이 바로 레이블이다.
레이블이 있다는 것은, 수퍼바이저드 러닝이라는 뜻


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

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

위와같은 식을 가진 regression을, Logistic Regression이라 한다.
이제 우리는, 이를 가지고 두개의 클래스로 분류 할 수 있다.
( 클릭을 한다, 안한다 두개로. )
확률로 나타낼 수 있게 되었다.
p는 확률값을 나타낸다.

20대는 클릭 할 확률이 0.7%, 40대는 85%, 50대는 99.4%
이 확률값은, 위에서의 시그모이드 함수를 적용한 식을 통해 나온 값임을 기억한다.

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

나이와 연봉으로 분석해서, 물건을 구매할지, 안할지를 분류해보자
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

NaN처리
df.isna().sum()

X, y 분리
X = df.loc[: , ['Age','EstimatedSalary']]
y = df['Purchased']
feature scaling
표준화 방법으로 피처스케일링 한다.
from sklearn.preprocessing import StandardScaler, MinMaxScaler
s_scaler = StandardScaler()
X = s_scaler.fit_transform(X)

학습용과 테스트용으로 나눈다.
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()
classifier.fit(X_train, y_train)

성능평가 한다.
y_pred = classifier.predict(X_test)

Confusion Matrix

두개의 클래스로 분류하는 경우는 아래와 같다.


from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
cm

정확도 계산
(51+17) / cm.sum()

위처럼 정확도를 직접 계산 할 수도 있지만,
정확도 계산을 위한 라이브러리를 제공한다.
- 정확도 -
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred)

- 정확도, 정밀도, 재현율 -
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))




'Machine Learning' 카테고리의 다른 글
| Machine Learning - Logistic Regression (이상한 값을 NaN으로 처리하기) (0) | 2022.05.08 |
|---|---|
| Machine Learning - KNN(K-Nearest Neighbor) (0) | 2022.05.08 |
| Machine Learning - New data Predicting [신규 데이터 예측하기( np.array)] (0) | 2022.05.07 |
| Machine Learning - Multiple Linear Regression(여러개의 수치데이터 예측) (0) | 2022.05.07 |
| Machine Learning - Linear Regression( 수치데이터 예측) (0) | 2022.05.07 |