『ADP 실기 데이터 분석 전문가』 모의고사 2회_정형데이터
Q1) cabin, embarked변수의 값 중 ""로 처리된 값을 NA로 바꾸고 아래의 데이터 테이블을 보고 문자형, 범주형 변수들을 각각 character, factor형으로 변환하시오. 또, 수치형 변수가 NA인 값을 중앙값으로 대체하고, 범주형 변수가 NA인 값을 최빈값으로 대체하고 age변수를 아래의 표와 같이 구간화하여 age_1이라는 변수를 생성하고 추가하시오.
데이터 분석 공부 입문자용으로 유명한 titanic.csv 파일을 가지고 정형데이터 마이닝을 진행한다. 문제에서 요구한 여러가지 전처리를 아래와 같이 실행하였다. 문제가 R위주로 나왔기 때문에 python에 맞지 않는 부분도 있지만 일단은 문제에서 요청한 모든 것을 적용해보았다.
먼저 결측치 전처리의 경우, 이미 데이터를 불러올 때 nan값으로 읽어왔지만, df['cabin'].replace("", np.nan)을 통해 ""의 부분을 nan 결측치로 입력하였다. 또한, 각각의 문자형, 범주형 변수들을 데이터프레임의 astype 메서드를 사용해서 각각 string 혹은 category 타입으로 변경하였다. R의 character는 python에서 string, R의 factor는 python에서 category로 보면 된다. 또한, sklearn의 SimpleImputer 함수를 사용해서 결측치를 채우는데 수치형인 age, fare는 중앙값(median)으로 채우고, 범주형인 나머지 feature들은 최빈값(most_frequent)로 채웠다. 마지막으로 age변수를 pandas의 cut함수를 이용해 각 나이대 별로 구간화하여 age_1이라는 컬럼에 데이터를 입력하였다.
Q2) 전처리가 완료된 titanic 데이터를 train(70%), test(30%) 데이터로 분할하시오. (set.seed(12345)를 실행한 후 데이터를 분할하시오.) 또, train 데이터로 종속변수인 survived(생존 여부)를 독립변수 pclass, sex, sibsp, parch, fare, embarked로 지정하여 예측하는 분류모델을 3개 이상 생성하고 test 데이터에 대한 예측값을 csv파일로 각각 제출하시오.
데이터가 수치형이 아닌 상태에서는 계산이 안되기 때문에 일단 카테고리형 데이터들도 모두 수치형으로 변환을 시켜준다. sex, embarked를 수치형으로 변환했고 특히 타겟변수인 survived는 타입을 정수형(int64)으로 변환하였다.
그리고 분류에서 많이 사용되는 로지스틱 회귀, MLP, XGboost로 모델링 하였다. train, test set을 나눌 때 stratify=y 식으로 층화분할을 해주는 것이 좋다. 그러면 타겟값(survived=0과 1)이 균형있게 나뉘어질 수 있다.
각각의 모델을 더 최적화해볼 수도 있겠지만, 그냥 기본으로, xgboost도 20개 분류기 정도로만 모델링하였다.
Q3) 생성된 3개의 분류모델에 대해 성과분석을 실시하여 정확도를 비교하여 설명하시오. 또, ROC curve를 그리고 AUC값을 산출하시오.
정확도와 AUC값은 아래와 같이 산출하였다. 최적화가 되지 않았지만 그럭저럭 괜찮은 결과를 얻었다.
『ADP 실기 데이터 분석 전문가』 참고자료실, http://www.dataedu.kr/data/adpbook_data.php
'Study history > ADP 실기 합격 기록' 카테고리의 다른 글
ADP) ADP 24회 실기 시험 후기 및 문제 복기 (6) | 2022.03.28 |
---|---|
ADP) 파이썬으로 푸는 ADP실기 데이터 분석전문가 모의고사 2회-(3) (0) | 2022.01.22 |
ADP) 파이썬으로 푸는 ADP실기 데이터 분석전문가 모의고사 2회-(1) (2) | 2022.01.22 |
ADP) 파이썬으로 푸는 ADP실기 데이터 분석전문가 모의고사 1회-(3) (2) | 2022.01.21 |
ADP) 파이썬으로 푸는 ADP실기 데이터 분석전문가 모의고사 1회-(2) (0) | 2022.01.20 |
댓글