AIoT

AIoT 정규 50일차

맥기짱짱 2024. 3. 14. 23:00

타이타닉 생존률 예측하기 (머신러닝)

데이터는 kaggle에 있는 자료를 사용했다 (https://www.kaggle.com/competitions/titanic). 

 

Titanic - Machine Learning from Disaster | Kaggle

 

www.kaggle.com

 

 

Data Download

 

데이터 별 의미:

변수 의미 Key
survival 생존여부 0 = No, 1 = Yes
pclass 티켓 등급 1 = 1st, 2 = 2nd, 3 = 3rd
sex 성별  
Age 승객 나이  
sibsp 타이타닉호에 탄 형제와 배우자의 수  
parch 타이타닉호에 탄 부모나 자녀의 수 만약에 친척이랑 왔으면 = 0
ticket 티켓 번호  
fare 승객 비용  
cabin 선실 번호  
embarked 승선한 항구 C = Cherbourg, Q = Queenstown, S = Southampton

 

 

Data 불러오기:

import numpy as np
import pandas as pd
import os

 

# 데이터 읽기
train_data = pd.read_csv("data/train.csv")
test_data = pd.read_csv("data/test.csv")

 

# 데이터 head 출력해보기(앞에 있는 5열만 출력)
train_data.head()

test_data.head()

 

 

 

- 성별에 따른 생존률

 

# 여성 생존률
women = train_data.loc[train_data.Sex == 'female']['Survived']
rate_women = sum(women)/len(women)

print("percentage of women who survived: ", rate_women)
 
percentage of women who survived:  0.7420382165605095
 
# 남성 생존률
men = train_data.loc[train_data.Sex == 'male']['Survived']
rate_men = sum(men)/len(men)

print("percentage of men who survived: ", rate_men)
percentage of men who survived:  0.18890814558058924

--------------------------------------------------------------------------------------------------------------------------------------

분석

# data analysis and wrangling
import pandas as pd
import numpy as np
import random as rnd

# visualization
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

# machine learning
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.tree import DecisionTreeClassifier
train_df = pd.read_csv('data/train.csv')
test_df = pd.read_csv('data/test.csv')
combine = [train_df, test_df]
train_df.info()
print('_'*40)
test_df.info()

 

-  Null 데이터 및 empty values

: traing데이터 셋에서는 Cabin > Age > Embarked 순으로 null 데이터를 가지고 있었고, test 데이터셋에서는 Cabin > Age 순으로 완성되지 않은 데이터를 가지고 있었다. 

 

- 데이터 타입 확인:

  • 7개의 숫자형 데이터(int, float), 그 중 6개는 test dataset에 있었다.
  • 5개의 문자형 데이터(string). 여기서는 object로 표시된다
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
________________________________________
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 11 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  418 non-null    int64  
 1   Pclass       418 non-null    int64  
 2   Name         418 non-null    object 
 3   Sex          418 non-null    object 
 4   Age          332 non-null    float64
 5   SibSp        418 non-null    int64  
 6   Parch        418 non-null    int64  
 7   Ticket       418 non-null    object 
 8   Fare         417 non-null    float64
 9   Cabin        91 non-null     object 
 10  Embarked     418 non-null    object 
dtypes: float64(2), int64(4), object(5)
memory usage: 36.1+ KB

 

 

- 데이터 분석:

  • 전체 샘플은 891개로, 타이타닉호에 탑승한 실제 탑승객의 수(2,224명)의 40%이다.
  • 'Survived’는 0 또는 1 값을 가진다.
  • 약 38%의 샘플이 생존했는데, 이 중 실제 생존률은 32%입니다.
  • 대부분의 승객들(> 75%)은 부모나 자녀와 함께 여행하지 않았습니다.
  • 승객들 중 거의 30%가 형제자매와/또는 배우자와 함께 탑승했습니다.
  • 요금은 상당히 다양했으며, 소수의 승객들(상위 1%)이 최대 $512까지 지불했습니다.
  • 65-80세 범위의 노인 승객은 거의 없었습니다(1% 미만).

reference code: 

1) https://www.kaggle.com/code/startupsci/titanic-data-science-solutions

2) https://www.kaggle.com/code/alexisbcook/titanic-tutorial

 

tip. 주피터 노트북 단축키

- Command Mode (코드 입력칸 밖)

: 단축키를 실행하기 전에 셀 선택 상태에서 단축키를 눌러야한다. (셀 선택 단축키 = [ESC] or [Ctrl]+[m]) 

 

단축키 설명
[a] 위에 새로운 셀 추가
[b] 아래에 새로운 셀 추가
[c] 셀 복사
[v] 셀 붙여넣기
[x] 셀 잘라내기
[dd] 셀 삭제
[p] 셀 아래에 붙여넣기
[o] 실행결과 열기/닫기
[m] Markdown으로 변경
[y] Code로 변경
[Shift] + [m] 선택 셀과 아래 셀과 합치기
[Ctrl] + [s] 파일 저장
[Enter] 선택 셀의 코드 입력 모드로 돌아가기

 

 

- Edit Mode(코드 입력칸 안)

: 단축키를 실행하기전에 코드 입력칸 안에 있어야 한다. 코드 입력 모드로 바꾸는 단축키 = [Enter]  

 

단축키 설명
Ctrl + Enter 입력 셀 실행
Shift + Enter 입력 셀 실행 후 아래 셀로 이동 (없으면 새로운 셀 추가)
Alt + Enter 입력영역 실행 후 아래 새로운 영역 추가
Ctrl + a 선택 셀의 코드 전체 선택
Ctrl + z 선택 셀 내 실행 취소
Ctrl + y 선택 셀 내 다시 실행
Ctrl + / 커서 위치 라인 주석처리
Shitf + Ctrl + - 커서 위치에서 셀 둘로 나누기

 

출처: https://planharry.tistory.com/22 [planharry:티스토리]

 

 

 

'AIoT' 카테고리의 다른 글

AIoT 정규 52일차  (0) 2024.03.25
AIoT 정규 51일차  (0) 2024.03.21
AIoT 정규 49일차  (0) 2024.03.13
AIoT 정규 48일차  (0) 2024.03.12
AIoT 정규 47일차  (0) 2024.03.12