: 기존 회귀 분석의 예측값 y를 0-1사이의 값으로 제한하여 0.5보다 크면 1, 0.5보다 작으면 0으로 분류
- 결측값 처리 방법
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)
- 로지스틱 회귀 모델(분류)
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]
roc_auc=roc_acu_score(y_test, y_predit_pro)
- 분류 모델 평가
# 정확도, 정밀도, 특이도, 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))
- 모델 개선
피처 엔지니어링 : 모델에 사용할 피처 가공하는 분석 작업
ex) 타이타닉 데이터
1) cabin 피처 활용
2) 이름 피처에서 중간 호칭(사회적 지위) 활용
- 평가 : 모델 검증
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()
출처 : 이것이 데이터 분석이다