반응형
타이타닉 데이터를 이용하여 로지스틱 회귀분석을 수행하는 예제입니다. 단계별 수행 내용은 주석으로 달아놓았습니다. 검증은 repeated k-fold 교차검증을 사용하였습니다.
import seaborn as sns
import pandas as pd
from sklearn.model_selection import RepeatedKFold
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
import numpy as np
#1. 데이터 불러오기
dt = sns.load_dataset('titanic')
#2. 나이 데이터 결측치 평균으로 대체
dt['age'].fillna(value=dt['age'].mean(),inplace=True)
#3. 문자열 범주형 데이터를 숫자로 매핑
dt['sex']=dt['sex'].map({'male':1,'female':0})
#4. 피처와 타겟 설정
feature=dt[['sex','age','pclass']]
target=dt['survived']
#5. fold 나누기
folds = RepeatedKFold(n_splits=10,n_repeats=100, random_state=3)
#6. 모델 생성하기
my_model = LogisticRegression()
#7. repeted K-fold CV로 모델 평가하기
scores = cross_val_score(my_model, feature, target,scoring='roc_auc', cv=folds)
#8. 결과 출력
print('AUC : %.3f (%.3f)' % (np.mean(scores),np.std(scores)))
결과는 아래와 같습니다.
>>> print('AUC : %.3f (%.3f)' % (np.mean(scores),np.std(scores)))
AUC : 0.846 (0.044)
아래는 타이타닉데이터 피처들의 설명입니다.
1. survived : 생존 여부 (0이면 사망, 1이면 생존)
2. pclass : 객실 등급 (1,2,3등급)
3. sex : 성별
4. age
5. sibsp : 함께 탑승한 형제 및 배우자 수)
6. parch : 함께 탑승한 자녀 및 부모 수)
7. fare : 요금
8. embarked : 탑승지 (C는 Cherbourg, Q는 Queenstown, S는 Southampton)
9. class : 객실 등급 (First면 1등급, Second면 2등급, Third면 3등급)
10. who 남자, 여자, 아이 (man, woman, child)
11. adult_male : 성인 남자인지 여부
12. deck : 선실 번호 첫 알파벳
13. embark_town 탑승지 이름 (Cherbourg, Queenstown, Southampton)
14. alive : 생존여부 (no면 사망, yes면 생존)
15. alone : 혼자 탑승했는지 여부
반응형
댓글