첫번째 Kaggle - Titanic(3)

다현·2022년 2월 4일
0

Kaggle

목록 보기
3/7
post-thumbnail

앞서 한 세가지 가정이 있습니다.

성별(Sex)에 따른 생존율, 가족(SibSp, Parch)에 따른 생존율, 객실등급(PClass)에 따른 생존율 정도를 생각해볼 수 있겠습니다. 이 변수들은 범주형(Sex), 순서형(PClass), 이산형(SibSp, Parch)

우선 Pclass에 따른 생존율을 보겠습니다.

train_df[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)

Pclass = 1의 생존율은 62.9%, Pclass = 2의 생존율은 47.2%, Pclass = 3의 생존율은 24.2%입니다.

train_df[["Sex", "Survived"]].groupby(['Sex'], as_index=False).mean().sort_values(by='Survived', ascending=False)

여성의 생존율은 74.2%, 남성의 생존율은 18.8%입니다.

train_df[["SibSp", "Survived"]].groupby(['SibSp'], as_index=False).mean().sort_values(by='Survived', ascending=False)

Sibling(자매), Spouse(부인, 남편)의 수가 1명일때 가장 높은 53.5%의 생존율을 보이고, 5명 이상일 경우 생존율은 0%입니다.

train_df[["Parch", "Survived"]].groupby(['Parch'], as_index=False).mean().sort_values(by='Survived', ascending=False)

함께 탑승한 부모 혹은 아이의 수가 3명일때 가장 높은 60%의 생존율을 보입니다. 4명과 6명일때는 생존율이 0%입니다.

그렇군요......
이제 나이에 따른 생존율을 보겠습니다.

# visualization
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
g = sns.FacetGrid(train_df, col='Survived')
g.map(plt.hist, 'Age', bins=20)

좌측 히스토그램은 사망율, 우측 히스토그램은 생존율입니다.
영아의 생존율이 높고, 15세에서 30세의 사망율이 높습니다. 가장 높은 연령의 승객은 생존했습니다.
즉, 연령에 따른 생존율 차이가 있습니다. 연령대를 범위로 나누어 생각해볼 수 있습니다.

다음으로 Pclass와 Age에 따른 생존율을 보겠습니다.

# grid = sns.FacetGrid(train_df, col='Pclass', hue='Survived')
grid = sns.FacetGrid(train_df, col='Survived', row='Pclass', height=2.2, aspect=1.6)
grid.map(plt.hist, 'Age', alpha=.5, bins=20)
grid.add_legend();

대부분의 승객이 3등급 객실에 탑승하였습니다. 하지만 대부분 살아남지 못했습니다. 1등급 객실의 대부분은 생존하였습니다. 즉 객실 등급에 따른 생존율 차이가 있습니다.
2등급 및 3등급 객실의 유아 대부분은 생존하였습니다. 즉 연령에 따른 생존율 차이가 있습니다.
연령에 따른 객실 등급 차이는 없습니다.

다음으로 성별과 객실등급과 승선항에 따른 생존율을 보겠습니다.

# grid = sns.FacetGrid(train_df, col='Embarked')
grid = sns.FacetGrid(train_df, row='Embarked', height=2.2, aspect=1.6)
grid.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep')
grid.add_legend()

여성의 생존율이 남성의 생존율보다 훨씬 높습니다. (Borded=C는 예외입니다.) 즉, 성별에 따른 생존율 차이가 있습니다. 승선항에 따른 차이 또한 있습니다.

다음으로 승선항, 성별, 운임에 대한 생존율을 보겠습니다.

# grid = sns.FacetGrid(train_df, col='Embarked', hue='Survived', palette={0: 'k', 1: 'w'})
grid = sns.FacetGrid(train_df, row='Embarked', col='Survived', height=2.2, aspect=1.6)
grid.map(sns.barplot, 'Sex', 'Fare', alpha=.5, ci=None)
grid.add_legend()

높은 운임료를 지불했을수록 생존율이 높습니다. Embarked = C에서 생존율이 가장 높습니다. 즉, 운임료와 승선항에 따른 생존율 차이가 있습니다.

  • 시각화 생존율 -> 생존자수

종합하면,
운임료, 승선항, 성별, 객실등급, 연령대에 따른 생존율의 차이가 보입니다.
model을 만들 때 이를 학습시켜 모델을 생성합니다.
코드에 대해서는 추후 이해해보겠습니다.

(참고: https://www.kaggle.com/startupsci/titanic-data-science-solutions)

profile
데이터 사이언티스트를 꿈꾸는 감자

0개의 댓글