지금은마라톤중

캐글 타이타닉 ( 6 ) 본문

Machine Learning/Kaggle

캐글 타이타닉 ( 6 )

달리는중 2022. 11. 23. 20:11

Titanic - 11. Feature engineering - Change string to categorical and Pearson coefficient

 

https://youtu.be/9GmeGAoBM7M

 

이번에는 문자열을 그래도 사용하면 인식의 오류가 있어서 숫자열로 바꿔주는게 좋다. map 과 딕셔너리를 이용하여 숫자의 값으로 표현하여 효율성을 높이는 작업을 했다. 

df_train['Initial'] = df_train['Initial'].map({'Master':0, 'Miss':1, 'Mr': 2, 'Mrs': 3, 'Other': 4})
df_test['Initial'] = df_test['Initial'].map({'Master':0, 'Miss':1, 'Mr': 2, 'Mrs': 3, 'Other': 4})
df_train['Embarked']= df_train['Embarked'].map({'C':0, 'Q':1, 'S': 2})
df_test['Embarked']= df_test['Embarked'].map({'C':0, 'Q':1, 'S': 2})

이 외의 Sex도 변경하였다. 


* Pearson coefficient
통계학에서, 피어슨 상관 계수란 두 변수 X와 Y간의 선형 상관 관계를 계량화한 수치다. 
일반적으로 상관관계는 피어슨 상관관계를 의미하는 상관계수이다.
heatmap_data = df_train[['Survived','Pclass','Sex','Fare','Embarked', 'FamilySize', 'Initial', 'Age_cat']]
#heatmap을 통해 상관관계를 확인할 수 있다.
colormap = plt.cm.RdBu
plt.figure(figsize=(14,12))
plt.title('Pearson Correalation of Features', y=1.05, size = 15)
sns.heatmap(heatmap_data.astype(float).corr(), linewidths = 0.1, vmax =1.2,
            square = False, cmap=colormap, linecolor = 'white', annot =True, annot_kws={'size': 16},fmt='.2f')


 

Titanic - 12. Feature engineering - One-hot encoding on the Initial and Embarked

 

https://youtu.be/MiTIGCs1v1A

 

one-hot encoding
수치화시킨 카테고리 데이터를 그대로 넣어도 되지만, 모델의 성능을 높이기 위해 사용한다.
pandas의 get_dummies를 사용하여 할 수 있다.

카테고리가 100개가 넘어가면 100개가 넘는 컬럼이 생겨 오히려 학습하는데 지장을 준다. 
이럴 경우에는 다음시간에 알려준다고 합니다^^

다음시간에는 필요없는 것은 것들을 날려버리는 작업을 진행할 것이다.

df_train = pd.get_dummies(df_train, columns=['Initial'], prefix='Initial')
df_test = pd.get_dummies(df_test, columns=['Initial'], prefix='Initial')
df_train = pd.get_dummies(df_train, columns=['Embarked'], prefix='Embarked')
df_test = pd.get_dummies(df_test, columns=['Embarked'], prefix='Embarked')
df_train.drop(['PassengerId','SibSp', 'Name', 'Parch', 'Ticket', 'Cabin'],axis=1,inplace=True)
df_test.drop(['PassengerId','SibSp', 'Name', 'Parch', 'Ticket', 'Cabin'],axis=1,inplace=True)

df_train.head()를 보면 dummies를 사용하여 각 Initial과 Embarked의 feature가 각각 생긴 것을 볼 수 있고, drop으로 사용하지 않는 것들을 제거하였다.

'Machine Learning > Kaggle' 카테고리의 다른 글

캐글 타이타닉 (5)  (0) 2022.10.27
캐글 타이타닉 ( 4 )  (2) 2022.10.09
캐글 타이타닉 ( 3 )  (0) 2022.10.09
캐글 타이타닉 ( 2 )  (1) 2022.10.03
캐글 타이타닉 ( 1 )  (1) 2022.10.03
Comments