IT/Analysis

[Kaggle] 케글 필사 - Titanic_2

무지개는 환상 2024. 2. 15. 17:12

<서론>

지난번에 작성한 이유한님의 케글 필사와 똑같은 타이타닉 데이터셋이다!

다만 이번에 필사한 것은 다른 해외 분의 케글을 필사하였다.

 

https://www.kaggle.com/code/ash316/eda-to-prediction-dietanic/notebook

 

EDA To Prediction(DieTanic)

Explore and run machine learning code with Kaggle Notebooks | Using data from Titanic - Machine Learning from Disaster

www.kaggle.com

 

지난번 이유한님의 케글 필사는 EDA 까지였다

하지만 이번에는 EDA 부터 Feature Engineering, 그리고 모델링까지 진행하였다!

 

느낀 부분

1. 오탈자 수정

data['Initial'].replace(['Mlle','Mme','Ms','Dr','Major','Lady','Countess','Jonkheer','Col','Rev','Capt','Sir','Don'],
['Miss','Miss','Miss','Mr','Mr','Mrs','Mrs','Other','Other','Other','Mr','Mr','Mr'],inplace=True)

 

Initial 컬럼에 있는 값을 그냥 버릴 줄 알았지만, 수정하여 활용한 부분이 신기했다.

영어 성이 익숙치 않아 생각치 못한 부분에 대한 접근을 하는 것이 신기했다. (한국 이었다면 '박' 이란 성을 '빅'으로 쓴 오탈자를 수정한 것)

 

 

2. 호칭별 평균 연령을 이용한 결측치 처리

## Assigning the NaN Values with the Ceil values of the mean ages
data.loc[(data.Age.isnull())&(data.Initial=='Mr'),'Age']=33
data.loc[(data.Age.isnull())&(data.Initial=='Mrs'),'Age']=36
data.loc[(data.Age.isnull())&(data.Initial=='Master'),'Age']=5
data.loc[(data.Age.isnull())&(data.Initial=='Miss'),'Age']=22
data.loc[(data.Age.isnull())&(data.Initial=='Other'),'Age']=46

 

위에 처리한 오타를 수정 후 각 호칭 별 평균 연령을 구한 후, 해당 값을 가지고 있는데 Null값들을 채워주었다. 

이렇게 함으로써 Age 에서의 Null 값은 없어지게 되었다.

 

 

3. 데이터 성격별 다른 결측치 처리

data['Embarked'].fillna('S',inplace=True)

 

나이 같은 연속형 값은 구간별 평균을 이용해 Null값을 할당하였다면, 

범주형 값들은 Null값을 최빈값을 이용해 할당하였다.

 

 

4. 여러 모델을 이용한 앙상블

여러 머신러닝 패키지들을 불러와 앙상블을 진행하였다.

 

사용한 예측 모델들 (여어 반갑고~)

1)Logistic Regression

2)Support Vector Machines(Linear and radial)

3)Random Forest

4)K-Nearest Neighbours

5)Naive Bayes

6)Decision Tree

7)Logistic Regression

 

사용한 앙상블 기법들

1)Voting Classifier

2)Bagging

3)Boosting

 

앙상블 기법들 중 가장 높은 점수를 받은 AdaBoost에다가 

하이퍼 파라미터 수정을 하여 최대값이 83.16% (n_estimators=200 , learning_rate=0.05) 나왔다. (원작자 기준)

 

나도 같은 AdaBoost 에 하이퍼 파라미터 값을 수정하여 최대값 82.94% (n_estimators = 100, learning_rate=0.1) 이 나왔다.

아마 랜덤 셔플 및 여러 변수들에 의해 값이 조금 다르게 나온것 같다!

 

 

<후기>

오랜만에 사용하는 ML 모델 및 앙상블 기법들을 사용해보니 반가우면서 어색했다.. (어색한 친구 만난느낌..?)

이 모델을 왜썼더라? 모델의 특성이 뭐였더라...? 등들이 기억이 나지 않았다... 

(다시 복습해야할 것 같다..)

 

또한 컬럼간의 상관관계에서의 느껴야 하는 부분, 각 EDA를 통해 피쳐 엔지니어링을 어떻게 진행할 지에 대한 고찰등을 많이 느끼게 되었다.

 

 

나의 필사

https://colab.research.google.com/drive/1UR8_eBsUJbdqdR9zv7ITlZwU9RmffAhs?usp=sharing

 

Kaggle Titanic Practice_2

Colaboratory notebook

colab.research.google.com