캐글에서 가장 유명한 주제중 하나인 타이타닉 탑승자 생존률 구하기 데이터 분석을
캐글 코리아의 타이타닉 튜토리얼을 참고 하여 진행해보았다.
총 4가지 부분으로 나눴으며 순서는 아래와 같다.
2) EDA (Exploratory data analysis)
In [53]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
In [54]:
plt.style.use('seaborn')
sns.set(font_scale=2.5)
In [55]:
import missingno as msno
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline
1. Dataset 확인
In [56]:
df_train = pd.read_csv('../data/train.csv')
df_test = pd.read_csv('../data/test.csv')
In [57]:
df_train.head()
Out[57]:
각 feature에 대한 통계치¶
In [58]:
df_train.describe()
Out[58]:
In [59]:
df_test.describe()
Out[59]:
1.1 null data check
In [60]:
for col in df_train.columns:
msg = 'column: {:>10} \t Percent of NaN value: {:.2f}%'.format(col, 100* (df_train[col].isnull().sum()/df_train[col].shape[0]))
print(msg)
In [61]:
for col in df_test.columns:
msg = 'column: {:>10} \t Percent of NaN value: {:.2f}%'.format(col, 100* (df_test[col].isnull().sum() / df_test[col].shape[0]))
print(msg)
- Train, Test Set 에서 Age(둘다 약 20%), Cabin(둘다 약 80%), Ebarked(Train만 0.22%) null data가 존재함
- 아래는 MANO 라이브러리를 사용하여 null data를 확인한 결과 이다.
In [62]:
msno.matrix(df=df_train.iloc[:,:], figsize=(8,8), color=(0.8, 0.5, 0.2))
Out[62]:
In [63]:
msno.bar(df=df_train.iloc[:,:], figsize=(8,8), color=(0.8, 0.5, 0.2))
Out[63]:
In [64]:
msno.bar(df=df_test.iloc[:,:], figsize=(8,8), color=(0.8, 0.5, 0.2))
Out[64]:
1.2 Target label 확인
- target label 이 어떤 distribution을 가지고 있는지 확인이 필요함.
- binary classification 문제의 1과 0의 분포에 따라 모델의 평가 방법이 달라 질 수 있음.
In [65]:
f, ax = plt.subplots(1, 2, figsize=(18,8))
df_train['Survived'].value_counts().plot.pie(explode=[0,0.1],autopct='%1.1f%%', ax=ax[0], shadow=True)
ax[0].set_title('Pie plot - Survived')
ax[0].set_ylabel('')
sns.countplot('Survived', data=df_train, ax=ax[1])
ax[1].set_title('Count plot - Survived')
plt.show()
- 사망률이 더 크다
- 생존률은 38.4% 이다
- target label의 분포가 제법 균일(balanced)하다.
- 만약 불균일할 경우, 예를 들어 100중 1이 99, 0이 1개인 경우에는 만약 모델이 모든것을 1이라 해도 정확도가 99%이기 때문에 다시 고려해봐야한다.
'Competition > Kaggle' 카테고리의 다른 글
[kaggle] Titanic: Machine Learning from Disaster (2) (0) | 2020.09.01 |
---|---|
[kaggle] House Prices: Advanced Regression Techniques - 상관관계, 정규 분포 (0) | 2020.04.30 |
[kaggle] House Prices: Advanced Regression Techniques (3) 그래프 (0) | 2020.04.28 |