Machine Learning

MachineLearning - Decision Tree 타이타닉 생존자 예측하기 Part1

electronicprogrammer 2020. 10. 5. 13:56

 

이번 주제는 Machine Learning에서의 Decision Tree를 이용해서 타이타닉 생존여부에 대한 예측해보는 것입니다.

 

Part1 에서는 타이타닉 데이터에 대해서 분석해보고

Part2에서는 Decision Tree의 알고리즘의 원리 및 어떻게 진행되는지에 대해서 살펴보겠습니다.

Part3에서는 Scikit - learn에서의 Decision Tree를 사용해보는 방법을 알아보겠습니다

 

Part1

목표 : 타이타닉 데이터 분석 및 시각화 

 

데이터 출처 : www.kaggle.com/c/titanic/data

 

Titanic: Machine Learning from Disaster

Start here! Predict survival on the Titanic and get familiar with ML basics

www.kaggle.com

ipynb 파일 : github.com/sangHa0411/DataScience/blob/main/Titanic_Prediction_Part1.ipynb

 

sangHa0411/DataScience

Contribute to sangHa0411/DataScience development by creating an account on GitHub.

github.com

 

Pandas를 이용해서 csv파일로 된 데이터를 불러오고 구조 파악합니다.

생존 여부에 따른 속성은 Survived 이므로 이는 Target 데이터입니다.

그리그 그 외의 데이터들은 Machine Learning을 위한 데이터들이 되는데 이러한 데이터들이 Target 데이터들과 연관이 있는지 파악을 해야합니다.

 

 

1. 생존한 사람, 생존에 실패한 사람 수를 세서 비율을 파악합니다

 

2. 생존여부와 Pclass를 연관지어서 분석해봅니다

1 등석은 생존한 사람과 생존에 실패한 사람보다 많았습니다. 2등석은 생존한 사람과 생존 실패한 사람의 수가 비슷하였습니다.

그에 비해 3등석은 생존에 실패한 사람이 생존한 사람보다 훨씬 많은 것을 확인할 수 있었습니다.

 

 

3. 생존여부와 Sex와 연관지어서 분석해봅니다

남성의 경우 생존에 실패한 사람이 훨씬 많았습니다. 그에 비해 여성의 경우에는 생존한 사람이 훨씬 많은 것을 확인할 수 있었습니다.

 

3, 생존여부와 Embarked 즉 탑승 장소를 연관지어서 분석해봅니다

위 데이터를 통해서 탑승 장소가 생존 여부에 영향을 주었다는 것을 확인할 수 있었습니다.

 

위 데이터들은 이산적인 속성의 데이터들과 생존 여부를 비교해본 것이였습니다. 

다음은 연속적인 속성의 데이터과 생존 여부를 비교해보겠습니다.

 

먼저 생존여부에 따라서 데이터를 분할하였습니다.

 

 

1. 생존 여부에 따른 나이를 비교해보겠습니다

생존에 실패한 사람들의 나이대가 생존에 성공한 사람들의 나이데 보다 조금 더 많다는 것을 확인할 수 있습니다. .

 

2. 생존 여부와 Fare(요금)를 비교해보겠습니다.

개인적인 관점으로는 Fare는 생존 여부와 크게 상관이 없어보입니다

 

이런 식으로 모든 속성을 하나하나 생존여부와 비교해서 Machine Learning에 사용할지 안할 지 결정하는 것은 주관적인  생각이 들 수도 있으니 무든 속성에 대해서 생존 여부와의 상관관계를 수치로 파악해보자 합니다.

 

 

위에서 Survived와 관련된 값만 출력하면 아래와 같이 됩니다.

상관 계수가 1에 가까울 수록 생존 여부와 정비례 , 상관 계수가 -1에 가까울 수록 생존 여부와 반비례 그리고 0에 가까울 수록 생존여부와 크게 상관 없다는 뜻입니다.

 

따라서 저는 Age , SibSp , Parch 속성은 Machine Learning에 사용하지 않는 것으로 결정하였습니다.

 

Part1에서는 여기까지 하고 Part2에서 데이터 전처리 및 Decision Tree 알고리즘을 파악해보곘습니다.