본문 바로가기
Machine Learning

[ML] Titanic Survivor Prediction_ dicaprio&winslet

by ram_ 2023. 1. 3.

STEP 01. Data Info

titanic의 구조를 확인해 쓸 수 있는 데이터를 확인해본다. pclass, sex, age, fare 등이 활용하기 좋을 것 같다.

각각의 컬럼에 1309개의 데이터가 있어야 하는데, 그렇지 않은 칼럼도 존재한다. 

이번 프로젝트에서 age와 fare을 제외한 결측치는 포기해준다.

 

중요한 것은 머신러닝을 위해서는 해당 컬럼을 숫자로 변경해야 한다는 점이다.

 

 


STEP 02. Transform Data

 

 

<Label Encode를 사용하여 sex 칼럼을 숫자로 변경>

 

  • sklearn의 preprocessing 전처리 모듈에서 제공하는 LabelEncoder을 사용한다.이는 문자를 숫자로 바꿔주는 키워드이며, 이를 fit(학습)을 시켜준다. 
  • classes_를 확인해보면 해당 값 확인 가능하다.
  • titanic 데이터에 gender 컬럼을 새로 만들어 주는데, 변환을 시켜주는 transform( )을 사용한다. female과 male은 두개이니 0과 1로 표시될 것이다.

 

 

 

 

 

 

 

<null값 포함 데이터 지우기>

 

  • 결측치 중, age와 fare은 사용하려 하는데, info의 entries를 확인해보았을때 null값이 존재했다.
  • .notnull( )을 사용하여 null값이 존재하지 않는 값만 titanic 데이터에 재할당 해준다.
  • 다시 info를 확인해보면 전 대비 약 250개정도의 데이터가 준 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<상관관계>

  • 각 원인간의 상관관계를 heatmap으로  표현해보았다. 0.5가 가장 높은 값이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


STEP 03. ML 

<Decision Tree>

train_test_split으로 8:2비율로 train데이터와 test데이터를 분리시켜준다. 

DecisionTree와 정확도 확인을 위한 accuracy_score를 import 해준다. 

X_train데이터는 특성, y_train데이터는 라벨인데 이를 dt에 학습시킨다.

pred(ict)변수에 학습을 완료한 dt를 넣고 X_test데이터를 넣어 성능을 예측하게 만든다. 

참값인 y_test데이터와 예측값인 pred데이터를 넣고 정확도를 알아봤다.  76.5%

 

 


 예제 ) 타이타닉 영화에서, 디카프리오와 윈슬릿의 생존률은 ?

X값의 순서에 맞게 극중 디카프리오와 윈슬릿의 정보를 넣어주면 된다.

영화에 따르면,

디카프리오는 3등석, 나이는 18, 부모와 형제는 없고 5달러를 주고 티켓을 샀으며 남자이고

윈슬릿은 1등석, 나이는 16, 부모와 형제가 있으며 100달러를 주고 티켓을 산 여자이다.

 

dt.predict_proba() 함수를 사용하고 그 안에 해당 예제를 넣어주면 생존률이 출력된다.

디카프리오의 생존률을 대략 23%, 윈슬릿은 100% 생존했을거라는 예측이 가능하다.

 

'Machine Learning' 카테고리의 다른 글

[ML] Wine Analysis _DecisionTree  (0) 2023.01.05
[ML] Encoder and Scaler  (0) 2023.01.04
[ML] Titanic Survivor Prediction  (0) 2023.01.03
[ML] Data Split_ zip / unpacking  (0) 2023.01.02
[ML] Data split_ tree_ iris  (0) 2023.01.02