본문 바로가기
머신러닝 딥러닝

0906 titanic

by 대금부는개발자 2021. 9. 6.
SMALL

Logistic Regression(binary classification)

 

대표적인 예제 중 하나가 Titanic

Data는 kaggle에서 다운로드해서 사용할 거예요!

kaggle 검색 →회원가입 search→titanic→Titanic - Machine Learning from Disaster→Data 

Data Explorer 

gender_submission.csv  -  형식

train.csv - x, t 학습용 데이터

test.csv  - x 쪽 입력 데이터 label은 내가 만들어야 해요! 

다 다운로드해서 우리의 폴더에 넣어요! 

C:\python_ML\data\titanic

나중에 Submit Predictions에 제출!!

 

 

Machine Learning을 진행해서 Model을 생성한 다음 test.csv를 이용해 결과 데이터를 만들고,

prediction data(결과 데이터)를 kaggle에 제출해서 score와 등수를 capture 해서 제출하세요!



import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split
# 이상치 처리와 정규화처리는 여러분들이 나중에 한번 해 보세요!

 

# Domain 분석부터 시작해 보아요!

# Raw Data Loading
df = pd.read_csv('./data/titanic/train.csv', sep=',')
# display(df) # label = Survived

#피쳐 엔지니어링(Feature engineering)
# PassengerId, Name, Ticket, Fare, Cabin 날릴 거예요!
train_df = df.drop(['PassengerId','Name','Ticket','Fare','Cabin'], axis=1,inplace=False)
# display(train_df)

# scale에 맞춰 문자를 숫자로 바꾸기 위해 남성은 0 여성은 1로 바꿀 거예요!
sex_mapping = {'male' : 0,'female' : 1} # mapping은 치환한다는 뜻
train_df['Sex'] = train_df['Sex'].map(sex_mapping) 
# display(train_df)

# SibSp, Parch는 가족정보이기에 하나의 column으로 합칠 거예요
train_df['Family'] = train_df['SibSp'] + train_df['Parch']
train_df.drop(['SibSp','Parch'], axis=1,inplace=True)
# display(train_df)

# Embarked 도 숫자로 바꿔줘요.
# Survived, Pclass, Sex 은 NaN 이없고, Age, Embarked는 missing value가 있어요
# Embarked에 NaN이 존재해요. 이 NaN을 다른 값으로 치환해서 사용해요!
# 최빈값을 이용해서 처리하는게 좋을 거 같아요!
train_df['Embarked'] = train_df['Embarked'].fillna('Q')

embarked_mapping = {'S' : 0, 'C' : 1, 'Q' : 2}
train_df['Embarked'] = train_df['Embarked'].map(embarked_mapping) 
# display(train_df)

# Age에도 NaN이 존재해요 → 전체 평균을 이용해서 NaN을 치환할 거예요!
train_df['Age'] = train_df['Age'].fillna(train_df['Age'].mean())
# display(train_df)

# Age는 어떻게 처리하면 좋을까요?? → Binning 처리(범주 안에 들어가 있는 것을 하나로)
# numerical value → categorical value
train_df.loc[train_df['Age'] < 8,'Age'] = 0
train_df.loc[(train_df['Age'] >= 8) & (train_df['Age'] < 20),'Age'] = 1
train_df.loc[(train_df['Age'] >= 20) & (train_df['Age'] < 60),'Age'] = 2
train_df.loc[(train_df['Age'] >= 60),'Age'] = 3

display(train_df)



                          
             

LIST

댓글