이것이 데이터분석이다 - 분류모델 1. 로지스틱 회귀 모델

화이팅·2023년 2월 28일
0

- 로지스틱 회귀 모델

: 기존 회귀 분석의 예측값 y를 0-1사이의 값으로 제한하여 0.5보다 크면 1, 0.5보다 작으면 0으로 분류

  1. 결측값 처리 방법

1) 결측값 데이터 삭제
2) 평균값 or 중앙값 or 최빈값 .. 등 임의의 값으로 채우기

# 평균값
replace_mean=df[df['age'] > 0]['age'].mean()
df['age']=df['age'].fillna(replace_mean) 

# 최빈값
mode=df['embarked'].value_counts().index[0]
df['embarked']=df['embarked'].fillna(mode)
  1. 로지스틱 회귀 모델(분류)
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

데이터 나누기
로지스틱 회귀 모델 학습 (fit)
예측결과 반환
y_pred=lr.predict(X_test)
y_pred_pro=lr.predict_proba(X_test)[:,1]
  • f1-score : 정밀도와 재현도의 조화 평균
  • roc curve : 재현도와 특이도 고려 -> 종합적인 모델 성능 그래프로 나타냄/ 그래프 넓이 계산 auc 1에 가까울 수록 좋은 분류 모델
roc_auc=roc_acu_score(y_test, y_predit_pro)
  1. 분류 모델 평가
# 정확도, 정밀도, 특이도, f1
print('accuracy : %.2f' % accuracy_score(y_test, y_pred)) 
print('precision : %.2f' % precision_score(y_test, y_pred)) 
print('recall : %.2f' % recall _score(y_test, y_pred)) 
print('f1 : %.2f' % f1_score(y_test, y_pred)) 
  1. 모델 개선
  • 피처 엔지니어링 : 모델에 사용할 피처 가공하는 분석 작업
    ex) 타이타닉 데이터

    1) cabin 피처 활용
    2) 이름 피처에서 중간 호칭(사회적 지위) 활용

  1. 평가 : 모델 검증

1) k-fold 교차 검증
: 불균등하게 데이터 나눠줬을 가능성 낮추기
데이터를 k개의 fold로 나눔
학습 데이터(k-1개), 테스트 데이터(1개)
-> 테스트 점수 간의 차이 크지 않다면 과적합 가능성 낮음
2) 학습 곡선 (scikitplot)

import scikitplot as skplt
skplt.estimators.plot_learning_curve(lr, X_train, y_train)
plt.show()

출처 : 이것이 데이터 분석이다

profile
하하...하.

0개의 댓글