카테고리 없음

Titanic

usefuLake 2020. 10. 3. 18:39

Reference

Problem : Kaggle

Solution : Youtube

 

Preprocessing, Feature engineering

- Kaggle 입문 문제인 Titanic 문제의 해설 Study

- 기본적인 Feature Engineering 기법 습득

 

Data Analysis

주어진 문제와 데이터를 먼저 분석하고 파악해야 한다. 문제는 파악했다고 가정, 기본적으로 주어지는 Training Data와 Test Data를 분석해본다.

 

1. Data 훑어보기

주어진 Data를 받아서 대략적으로 살펴보았다. Training Data / Test Data로 나뉘어져 있었다.

 

- Training Data

총 12개의 Column, 891개의 Row로 이루어져 있었다. (891 X 12)

순서대로 PassengerId, Survived, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabin, Embarked

PassengerId : 탑승 번호

Survived : 0(사망) / 1(생존)

Pclass : Ticket class, 1(1st) / 2(2nd) / 3(3rd)

Name : 이름

Sex :  성별 male / female

Age : 나이

SibSp : # of Siblings or Spouses

Parch : # of Parents or Children

Ticket : 티켓 번호

Fare : 운임

Cabin : 객실칸

Embarked : 탑승한 항구 C(Cherbourg) / Q(Queenstown) / S(Southampton

 

이 중 Age, Cabin의 경우 빈 값(Null)을 가지는 경우가 있어서 Null값을 채워넣는 과정이 필요했으며, 의미있는 정보를 통해서 Classification이 가능하도록 Preprocessing 이 필요했다.

 

- Test Data

Test를 위해서 Survived는 비어있었다.

 

2. Data 분석을 위한 Syntax

- Null data check

 

import pandas as pd

DataFrame.isna().sum()

Dataframe에서 column별로 null data를 가지고 있는 개수를 Counting

 

- Regular expression을 통한 부분 string data 뽑아내기

Series.str.extract(" ([A-Za-z]+)\.", expand=False)

Mrs. // Miss. // Mr. 와 같은 Middle name을 element-wise로 뽑아내서 따로 저장할 수 있다.

 

- Mapping

Series.map({"Mr":0, "Mrs":1, ...})

기존에 가지고 있는 Data를 Dictionary의 Key에 맞게 Value로 치환해주는 작업 수행

 

- Data 기준에 맞게 Grouping, 특정값으로 null값 채워넣기

#DataFrame["SeriesName].fillna(DataFrame.groupby("columnName")["SeriesName"].transform("function")
dfTrain_dName["Age"] = dfTrain_dName["Age"].fillna(dfTrain_dName.groupby("Title")["Age"].transform("median"), inplace=False)

fillna, groupby, transform method를 가지고 data를 grouping, null data를 특정계산값으로 채워넣는다.