본문 바로가기

STUDY

파이썬 스터디 6주차(캐글)

ㅋㅋㅋㅋㅋ... ㅎ... 그냥 생각이 없다. 스터디 앞두고 부랴부랴 강의듣는 나 칭찬.....하지 않아

분명 뭔가 하고는 있는데 가시적으로 나타나는 결과는 하나도 없었던 일주일이다..

 

https://youtu.be/9GmeGAoBM7M

캐글 타이타닉 11. Feature Engineering - Changes string to categorical and Pearson coefficient

- 각 값 아는법 : uniqe()는 각 값들의 종류를 알려주고, value_counts()는 각 값들과 도수를 같이 알려준다.

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})
#Initial값에 따라 숫자 맵핑. Master였다면 0, Miss였다면 1.

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})
#Embarked값에 따라 숫자 맵핑. C였다면 1, S였다면 2.

df_train['Sex'] = df_train['Sex'].map({'female': 0, 'male': 1})
df_test['Sex'] = df_test['Sex'].map({'female': 0, 'male': 1})
#Sex값에 따라 숫자 맵핑. female이었다면 0, male이었다면 1.

- isnull().sum()을 했을 때 합이 1이상이거나 isnull().any()를 했을때 True가 나온다면 널값이 있는 것이다. 

 

- 왼쪽은 상관계수를 구하는 수식이다. 두 변수간의 피어슨 상관계수를 구하면 -1과 1 사이의 값을 얻을 수 있다. 절대값이 1에 가까울수록 (양/음의)상관관계가 있다고 하고 0이라면 상관관계가 없다고 한다. 

- 여러 피처를 하나의 매트릭스 형태로 보는 것을 heatmap plot이라 한다. dataframe의 corr()과 seaborn으로 쉽게 그릴 수 있다.

heatmap_data = df_train[['Survived', 'Pclass', 'Sex', 'Fare', 'Embarked', 'FamilySize', 'Initial', 'Age_cat']]
#히트맵을 그릴 때 데이터로 쓸 칼럼 묶어두기

colormap = plt.cm.Purples_r #테마 설정
plt.figure(figsize=(14, 12)) #도화지 크기 설정
plt.title('Pearson Correlation of Features', y=1.05, size=15) #도화지 제목 붙이기
sns.heatmap(heatmap_data.astype(float).corr(), linewidths=0.1, vmax=1.0, square=True, cmap=colormap,\
            linecolor='white', annot=True, annot_kws={"size":16}, fmt='.1f')
del heatmap_data
#히트맵 그린 뒤 묶어둔 칼럼들 삭제하기

- astype()은 히트맵의 모든 데이터 타입을 바꾸며, vmax는 색깔 바의 숫자폭, annot는 네모 안에 있는 숫자의 유무를, fmt는 포맷(반올림)을 의미한다.

- 히트맵은 각 변수들의 상관관계를 한눈에 보기 쉽게 만들어준다.

 

https://youtu.be/MiTIGCs1v1A

캐글 타이타닉 12. Feature Engineering - One-hot encoding on Initial and Embarked

 

- 원-핫 인코딩이란 왼쪽과 같이 0과 1로 이루어진 다차원의 벡터로 만드는 것을 의미한다.

- 이는 사이킷런의 LabelEncoder와 OneHotEncoder로도 이용 가능하다.

df_train = pd.get_dummies(df_train, columns=['Initial'], prefix='Initial')
df_test = pd.get_dummies(df_test, columns=['Initial'], prefix='Initial')
#get_dummies로 initial에 따른 one-hot encoding 수행

df_train = pd.get_dummies(df_train, columns=['Embarked'], prefix='Embarked')
df_test = pd.get_dummies(df_test, columns=['Embarked'], prefix='Embarked')
#get_dummies로 Embarked에 따른 one-hot encoding 수행

df_train.drop(['PassengerId', 'Name', 'SibSp', 'Parch', 'Ticket', 'Cabin'], axis=1, inplace=True)
df_test.drop(['PassengerId', 'Name', 'SibSp', 'Parch', 'Ticket', 'Cabin'], axis=1, inplace=True)
#분석에 필요하다 여겨지는 것들 빼고 삭제

df_train.head(). initial_0부터 initial_4, embarked_0부터 embarked_2까지 잘 만들어져있다.
df_test.head()또한 마찬가지. 위 그림에서 Survived를 제외한 나머지 칼럼명이 동일함을 확인할 수 있다.

- get_dummines() 방법을 활용했을 때 카테고리 수가 매우 많아질 수 있다. 이 경우 다른 방법을 사용한다.

'STUDY' 카테고리의 다른 글

파이썬 스터디 4주차(머신러닝)(1)  (0) 2022.02.21
파이썬 스터디 7주차(캐글)  (0) 2022.02.18
파이썬 스터디 5주차(캐글)  (0) 2022.02.04
파이썬 스터디 5주차(백준)  (2) 2022.02.03
파이썬 스터디 4주차(캐글)  (0) 2022.01.30