728x90
로지스틱 회귀분석 logistic regression
연속 적인 값을 예측하는 일반적인 회귀 분석과는 달리
0 또는 1로 분류하는 분류 추정기로
타겟 값이 0, 1만 주어진 문제에서
선형 모델을 사용하는 경우 예측률이 많이 떨어진다.
이 선형 모델을 로짓 변환을 통해 시그모이드 함수 형태로 바꾸어
0, 1을 다루는 문제를 더 잘 분류 할수 있도록 만든 회귀 모델이 로지스틱 회귀 모델

간단하게 유방암 데이터로 다뤄보자
우선 라이브러리 임포트
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.metrics import accuracy_score, roc_auc_score
import pandas as pd
import numpy as np
데이터를 표준화 시킨 후
간단하게 정확도와 roc auc 스코어를 보면

cancer = load_breast_cancer()
df = pd.DataFrame(data=cancer.data, columns=cancer.feature_names)
scaled_df = StandardScaler().fit_transform(df)
X_train, X_test, y_train, y_test = train_test_split(scaled_df, cancer.target, test_size=0.2)
lr = LogisticRegression()
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
print("acc : {0:.3f}".format(accuracy_score(y_test, y_pred)))
print("roc auc : {0:.3f}".format(roc_auc_score(y_test, y_pred)))
로지스틱 회귀 모델도 L2, L1 규제를 파라미터로 받는데 이 규제 파라미터와
알파 값을 조절하는 파라미터 C = 1/alpha를 조절하여 최적 하이퍼파라미터 탐색
C = 1 -> alpha = 1이고, L2 규제를 했을때 0.980686으로 최적의 성능이 나옴.

params = {
"penalty" : ["l2", "l1"],
"C" : [0.01, 0.1, 1, 5, 10]
}
lr = LogisticRegression()
gs = GridSearchCV(lr, param_grid=params, cv=5, n_jobs=-1, scoring="accuracy")
gs.fit(scaled_df, cancer.target)
print("best param : {}".format(gs.best_params_))
print("best acc : {}".format(gs.best_score_))
300x250
'인공지능' 카테고리의 다른 글
파이썬머신러닝 - 26. 자전거 대여 수요 예측하기 (0) | 2020.12.08 |
---|---|
파이썬머신러닝 - 25. 트리기반 회귀분석 (0) | 2020.12.08 |
파이썬머신러닝 - 23. 선형 회귀 모델 데이터 변환 (0) | 2020.12.07 |
파이썬머신러닝 - 22. 회귀 계수 크기를 제한하기(과적합 방지) 위한 L2규제와 L1규제 (0) | 2020.12.07 |
파이썬머신러닝 - 21. 다항 회귀 과소 적합과 과적합 문제 (0) | 2020.12.07 |