지금은마라톤중

캐글 타이타닉 ( 2 ) 본문

Machine Learning/Kaggle

캐글 타이타닉 ( 2 )

달리는중 2022. 10. 3. 16:13

캐글 타이타닉 Titainic 3. EDA  - Sex

 

https://youtu.be/-v42Y-r9VqE?list=PLC_wC_PMBL5MnqmgTLqDgu4tO8mrQakuF 

f, ax = plt.subplots(1,2,figsize=(18,8))
df_train[['Sex', "Survived"]].groupby(['Sex'], as_index=True).mean().plot.bar(ax=ax[0])
ax[0].set_title('Survived vs Sex')
sns.countplot('Sex', hue='Survived', data=df_train, ax=ax[1])
ax[1].set_title('Sex: Survived vs Dead')
plt.show()

해석: 두 그래프는 성별에 따른 생존을 나타낸 것이다. 여성이 남성보다 생존을 많이 한 것을 확인할 수 있다. 오른쪽 그래프는 수를 나타낸 것인데, 사망자수는 남성이 약 5배가 많고, 생존자수는 남성이 약 두배 작은 것을 확인할 수 있다.

 

sns.factorplot('Pclass','Survived', hue="Sex", data=df_train, size=6, aspect=1.5)

해석: 3가지가 한번에 표현되어 있다. 전체적으로 여성이 남성보다 모든 클래스에서 생존을 많이 한 것을 볼 수 있다. 그리고 남성과 여성 모두 등급이 높을수록 생존을 많이 하였다.

- factorplot : 하나의 표에서 3개의 지표를 볼 수 있다. 위 표에서는 Pclass, Survived, Sex를 표현했다.

- aspect : 그래프의 스케일을 조절

 

sns.factorplot(x='Sex',y='Survived', col='Pclass', data=df_train, saturation=5,size=9, aspect=1)

-saturation :  채도 설정

 

*에러바(error bar, 오차막대)

-3가지 많이 사용

1. 표준편차(standard deviation, SD)
2. 표준오차 (standard error, SE)
3. 95% 신뢰구간 (95% confidence interval, CI)

 

1. 기술적 오차 막대 (Descriptive error bar)

범위(range)나 표준편차(SD)를 이용하여 자료의 산포도를 나타내는 것을 의미한다.
다시 말해 자료 값들이 얼마나 퍼져 있는지를 막대의 길이로 표현한 것이다.
막대의 길이가 길수록 자료 값들이 더 많이 퍼져있다고 이해할 수 있다.

 

 

2. 추론적 오차 막대 (Inferential error bar)

표준오차(SE)나 신뢰구간(CI)을 이용하여 오차막대를 그린다면 그래프에서도 그룹간에 유의한 차이가 있는지 확인할 수 있다. 이를 추론적 오차 막대라고 한다.


캐글 타이타닉 Titainic 4. EDA  - Age

 

https://youtu.be/35j4pCe-fQk?list=PLC_wC_PMBL5MnqmgTLqDgu4tO8mrQakuF 

 

*kedplot (커널 밀도 추정(KDE: Kernel Density Estimator))

: 히스토그램 같은 분포를 부드럽게 곡선화하여 표현하는 것

 

fig, ax = plt.subplots(1,1, figsize=(9,5))
sns.kdeplot(df_train[df_train['Survived']==1]['Age'], ax=ax)
sns.kdeplot(df_train[df_train['Survived']==0]['Age'], ax=ax)
plt.legend(['Survived==1', 'Survived==0'])
plt.show()

 

해석 : 전체 승객의 나이가 20~40대 사이에 많이 분포하는 것을 볼 수 있다. 그 중 20~30대에서 생존율이 가장 높은 것을 볼 수가 있다. 그러나 사망률이 생존율보다 크다. 0~10대가 생존율이 사망률보다 크고 갭 차이가 크므로 0~10대가 상대적으로 많은 생존을 했다고 해석된다. 

 

plt.figure(figsize=(8,6))
df_train['Age'][df_train['Pclass']==1].plot(kind='kde')
df_train['Age'][df_train['Pclass']==2].plot(kind='kde')
df_train['Age'][df_train['Pclass']==3].plot(kind='kde')

plt.xlabel('Age')
plt.title('Age Distribution within classes')
plt.legend(['1st class', '2nd class', '3rd class'])

해석 : 다음은 나이별 Pclass를  kde plot로 표현하였다. 1등석은 다른 등급보다 비율이 낮고 상대적으로 나이가 더 많은 사람들이 분포가 비중을 차지한다. 3등급 > 2등급 > 1등급 순으로 비중이 크며, 각 그래프의 peak는 아랫 등급일수록 더 낮은 연령에 있는 것을 확인가능하다. 

 

change_age_range_survival_ratio = []
for i in range (1,80):
    change_age_range_survival_ratio.append(df_train[df_train['Age']<i]['Survived'].sum()/len(df_train[df_train['Age']< i]['Survived']))
    
plt.figure(figsize=(7,7))
plt.plot(change_age_range_survival_ratio)
plt.title('Survival rate change depending on range of Age', y=1.02)
plt.ylabel('Survival rate')
plt.xlabel('Range of Age(0-x)')
plt.show()

 

해석: for문을 이용하여 79세까지의 생존율을 계산하였다. 어릴수록 생존율이 크고 나이가 커질수록 생존율이 감소하다고 해석된다.

 

 

성별, 나이, 클래스에 따른 생존의 차이가 나타나는 것을 확인할 수 있었다. 타이타닉 데이터에서 생존에 대한 분석을 할 때 3가지 모두 유의미한 데이터로 활용될 수 있을 것 같다.

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

캐글 타이타닉 ( 6 )  (1) 2022.11.23
캐글 타이타닉 (5)  (0) 2022.10.27
캐글 타이타닉 ( 4 )  (2) 2022.10.09
캐글 타이타닉 ( 3 )  (0) 2022.10.09
캐글 타이타닉 ( 1 )  (1) 2022.10.03
Comments