카테고리 없음
[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_}')