Titanic dataset은 OpenML.org에 있으며, https://hbiostat.org/data/ 의 Vanderbilt University's Department of Biostatistics으로부터 제공받았다.
Titanic data는 타이타닉 승객들의 생존여부와 승객들의 나이, 티켓등급 등의 특성을 제공한다. 이 데이터를 사용하여 주어진 승객의 생존여부를 예측해는 모델을 만들어보자.
데이터 준비
1. https://hbiostat.org/data/repo/titanic3.csv 경로에서 CSV file 형태의 데이터를 다운받는다. hello_ds (https://bigexecution.tistory.com/217 참조) 폴더에 저장한다.
2. Jupyter notebook(hello.ipynb)을 연다.
3. 아래 명령어를 notebook의 first cell에 복붙한다.
import pandas as pd
import numpy as np
data = pd.read_csv('titanic3.csv')
4. Run cell icon 클릭 또는 Shift+Enter 단축키로 명령어를 실행한다.
5. 변수탭에서 로딩된 data를 볼 수 있다.
6. Pandas DataFrame형태의 data를 확인하기 위해서, data 옆에 Data Viewer icon을 선택하면 Data를 확인할 수 있다.
7. 다음 명령어를 실행하여 seaborn과 matplotlib를 사용하여 dataset의 컬럼과 생존율의 상관관계를 볼 수 있다.
import seaborn as sns
import matplotlib.pyplot as plt
fig, axs = plt.subplots(ncols=5, figsize=(30,5))
sns.violinplot(x="survived", y="age", hue="sex", data=data, ax=axs[0])
sns.pointplot(x="sibsp", y="survived", hue="sex", data=data, ax=axs[1])
sns.pointplot(x="parch", y="survived", hue="sex", data=data, ax=axs[2])
sns.pointplot(x="pclass", y="survived", hue="sex", data=data, ax=axs[3])
sns.violinplot(x="survived", y="fare", hue="sex", data=data, ax=axs[4])
그래프 우측상단의 icon으로 복사, 확대, 저장을 할 수 있다.
8. 성별이 male, female로 되어 있는 것을 아래 코드를 실행하여 numeric으로 변경할 수 있다.
data.replace({'male': 1, 'female': 0}, inplace=True)
9. 머신러닝모델에 최상의 inputs이 되는 features를 정하기 위해, 모든 input 변수들의 상관관계를 분석해보자. 1에 가까울 수록 값과 결과 사이에 상관관계가 높은 것이다. 다음 코드를 실행하여 모든 변수와 생존율간의 관계를 분석해보자.
data.corr().abs()[["survived"]]
10. 관계 결과를 보자. sex와 같은 변수는 sibsp, parch에 비해 높은 관계성이 있는 것을 알 수 있다.
그러면 sibsp와 parch가 생존율에 어떠한 영향을 미쳤는지 알아보자. 두 컬럼을 하나의 컬럼으로 그룹지어 생존과 어떠한 상관관계가 있는지 분석해보자. sibsp와 parch의 수가 0보다 크면 relative가 있었다고 말할 수 있다.
data['relatives'] = data.apply (lambda row: int((row['sibsp'] + row['parch']) > 0), axis=1)
data.corr().abs()[["survived"]]
11. 승객이 relatives가 있었는지의 여부가 몇명이 있었는지에 비해 더 높은 상관관계가 있다는 것을 확인할 수 있다. 이제 NaN 값을 가지는 rows와 sibsp, parch 컬럼을 dataset에서 제거하자.
data = data[['sex', 'pclass','age','relatives','fare','survived']].dropna()
'Python' 카테고리의 다른 글
Python Django 프로젝트 IIS 설정 (0) | 2024.09.30 |
---|---|
VSCode] 윈도우 환경에서 Python, Django 개발환경 세팅 (3) | 2024.09.30 |
VSCode] Titanic dataset 분석하기 - 3. 신경망 neural network (0) | 2023.04.10 |
VSCode] Titanic dataset 분석하기 - 2. 모델 훈련과 평가 (0) | 2023.04.07 |
VSCode] 데이터 사이언스 환경설정(Python extension, Miniconda) (0) | 2023.04.07 |
댓글