- 개요
우선 데이터 사이언티스트 (이하 DS)의 꿈을 가장 크게 꾸게 해준 타이타닉은 매우 흥미로웠다.
타이타닉에 탑승했던 사람들의 일련의 데이터들을 토대로 정보로 이끌어 내어 분석하여 그 사람이 살았을지 죽었을지를 예측할 수 있다는 것이 말이다.
타이타닉은 생존 여부를 예측하는 이진 분류(binary claasification) 이다.
일례로 들면, 이는 고양이와 강아지 사진들 속에서 이 사진 속 동물이 고양이인지 강아지인지 맞추는 것과 같다.
단, 그 사진 속 특징 정보들이 각기 상이한 정보이고, 데이터로서 분산되어 있어서 그 분산된 데이터를 토대로 정보를 도출하여 사진 속 동물을 정확히 분류하는데 목표한다.
따라 아래에서 타이타닉의 데이터들을 토대로 정보를 도출하고 생존자 분류를 시작한다.
- EDA (탐색적 분석)
1. 데이터 획득
- 데이터는 아래 캐글 사이트 내의 타이타닉 컴피티션에서 획득할 수 있다.
https://www.kaggle.com/competitions/titanic/data

데이터를 다운받은 후
EDA에 기본적으로 필요한 라이브러리를 import하고 데이터를 불러온다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 한글 폰트 적용
plt.rc('font', family='Malgun Gothic')
# 캔버스 사이즈 적용
plt.rcParams["figure.figsize"] = (12, 9)
train = pd.read_csv("../input/train.csv")
test = pd.read_csv("../input/test.csv")
gender = pd.read_csv("../input/gender_submission.csv")
|
cs |
변수 설명 : 캐글 내에 있는 데이터 설명
survival Survival 0 = No, 1 = Yes # 생존 여부 - 우리의 target 데이터이다.
pclass Ticket class 1 = 1st, 2 = 2nd, 3 = 3rd # 승객의 티켓 등급이다. (객실 등급)
sex Sex
Age Age in years
sibsp # of siblings / spouses aboard the Titanic # 같이 탑승한 형제자매, 배우자 수
parch # of parents / children aboard the Titanic # 같이 탑승한 부모, 자식 수
ticket Ticket number
fare Passenger fare
cabin Cabin number # 승객의 객실 번호
embarked Port of Embarkation # 승객이 탑승한 항구
pclass: A proxy for socio-economic status (SES)
1st = Upper
2nd = Middle
3rd = Lower
age: Age is fractional if less than 1. If the age is estimated, is it in the form of xx.5
# 나이가 1 미만인 경우 1살 미만의 영유아의 개월 수 이다.
우리가 모델을 학습시키기 위해 사용할 데이터셋은 train 데이터셋이고 먼저 train에 대한 기술 통계를 확인해본다.

- 사실 describe() 함수는 각 컬럼의 갯수 평균과 표준편차 그리고 사분위 수를 표시해 주는데 해당 자료가 필요한 이터는 연속형 변수인 Age와 Fare 뿐이다.
- passengerId와 Pclass, SibSp, Parch는 명목형 변수이다.
- 하지만 python의 pandas에서는 해당 자료형들이 아래와 같이 int64이기 때문에 위와 같이 분류하게 된다.

- 연속형으로 분류된 column들을 명목형으로 다시 분류하려면 형변환을하면 된다.
- 명목형 변수의 describe를 보려면 train.describe(include=['O']) 와 같이 파라미터를 넣어주면 된다.
2. 성별 - EDA (탐색적 현황 분석)
성별 구분에 따른 분포

- 성별에 따른 생존확률을 보면, 각각 여성의 경우 0.74, 남성의 경우 0.19의 평균을 가진다.
- 이는 평균적으로 여성이 남성보다 높은 생존 확률을 가지는 것을 볼 수 있다.
관련된 내용을 막대 그래프를 이용해서 나타내면 다음과 같다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
fig = plt.figure(figsize=(10,10))
area01 = fig.add_subplot(2,2,1)
area02 = fig.add_subplot(2,2,2)
area03 = fig.add_subplot(2,2,3)
sns.countplot(data = train, x='Sex', ax=area01)
area01.set_title('성별 count')
sns.barplot(data = train, x="Sex", y="Survived", errwidth=0, ax=area02) # hue로 그룹화가 된다.
area02.set_title('성별 생존자 count')
sns.countplot(data = train, x='Sex', hue='Survived', ax=area03)
area03.set_title('성별 생존 여부 count')
plt.show()
|
cs |

- (1,1) 차트를 보면 전체 중에서 남성이 여성보다 2배 가량 많다.
- 하지만 (1,2) 차트를 보면 위의 group by 조회 결과 값을 시각적으로 확인할 수 있고, 남성의 생존율은 전체 남성 수에 비해 0.2 미만으로 낮은 것을 볼 수 있다.
- (2,1) 차트는 각 생존 여부에 따라 count한 것인데, 남성은 생존자가 대략 5:1, 여성은 1:3 정도의 수치를 보이고 있다.
성별/Pclass별 구분에 따른 분포

- 이번엔 성별과 Pclass별 구분에 따른 분포를 확인해보았는데, 일차적으로 여성이 남성보다 압도적으로 높은 편이고, 객실 등급에 따라 생존율도 차이나는 것을 볼 수 있다.
|
1
2
3
4
5
6
7
8
9
|
fig = plt.figure(figsize=(10,5))
area01 = fig.add_subplot(1,2,1)
area02 = fig.add_subplot(1,2,2)
sns.countplot(data = train, x='Sex', hue="Pclass", ax=area01)
sns.barplot(data = train, x = "Sex", y = "Survived", hue="Pclass", errwidth=0, ax=area02)
plt.show()
|
cs |

- 성별/Pclass별 count와 생존율을 시각적으로 비교한다.
다음 포스트
타이타닉 생존자 예측 분석 (2-2) EDA(연령대별) - v.1.0.1
이전 포스트 2023.01.04 - [Kaggle/타이타닉] - 타이타닉 생존자 예측 분석 (2-1) EDA v.1.0.1 타이타닉 생존자 예측 분석 (2) EDA v.1.0.1 - 개요 우선 데이터 사이언티스트 (이하 DS)의 꿈을 가장 크게 꾸게 해준
drewvvv.tistory.com
'Kaggle > 타이타닉' 카테고리의 다른 글
| 타이타닉 생존자 예측 분석 (3-3) 데이터 인코딩 - v.1.0.1 (4) | 2023.01.18 |
|---|---|
| 타이타닉 생존자 예측 분석 (3-2) 데이터 정리 - v.1.0.1 (0) | 2023.01.12 |
| 타이타닉 생존자 예측 분석 (3-1) 전처리 (나이예측) - v.1.0.1 (0) | 2023.01.09 |
| 타이타닉 생존자 예측 분석 (2-3) EDA(상관관계 및 기타) - v.1.0.1 (0) | 2023.01.09 |
| 타이타닉 생존자 예측 분석 (2-2) EDA(연령대별) - v.1.0.1 (0) | 2023.01.05 |
| 타이타닉 생존자 예측 분석 (1) 개요 (0) | 2023.01.04 |