카테고리 없음

[1008] 로지스틱 회귀

띄듸니 2021. 11. 8. 12:53
import pandas as pd
import numpy as np

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression

cancer = load_breast_cancer()

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

#StandardScaler() 로 평균이 0, 분산 1로 데이터 분포도 변환
scaler = StandardScaler()
data_scaled = scaler.fit_transform(cancer.data)

X_train, X_test, y_train, y_test = train_test_split(data_scaled, cancer.target, test_size = 0.3, random_state = 0)

from sklearn.metrics import accuracy_score

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

lr_preds = lr_clf.predict(X_test)

from sklearn.metrics import accuracy_score, recall_score, precision_score, confusion_matrix

def get_clf_eval(y_test, pred):
  confusion = confusion_matrix(y_test, pred)
  accuracy = accuracy_score(y_test, pred)
  precision = precision_score(y_test, pred)
  recall = recall_score(y_test, pred)
  print('오차행렬')
  print(confusion)
  print('정확도 : {0:4f}, 정밀도 : {1:4f}, 재현율 : {2:4f}'.format(accuracy, precision, recall))

 

 

# GridSearchCV : 약간 이해 안됨 여기 수업 다시 들어보기!!!!

여러 파라미터 중 최적의 파라미터를 찾아주는 함수??

from sklearn.model_selection import GridSearchCV

params = {'penalty':['l2'],
          'C' : [0.01,0.1,1,1.1,5,10]}

grid_clf = GridSearchCV(lr_clf, param_grid= params, scoring ='accuracy', cv = 3)

# 전체 데이터를 집어 넣고 grid_clf 안에서 자동으로 train, test(검증) 데이터 셋으로 나눠서 진행됨
# 그래서 굳이 나눠서 넣어줄 필요는 없음!!!
grid_clf.fit(data_scaled, cancer.target)

print(f'최적파라미터 {grid_clf.best_params_}')