Soohyun’s Machine-learning

Kaggle preprocessing & feature engineering process flow 본문

Machine Learning

Kaggle preprocessing & feature engineering process flow

Alex_Rose 2019. 4. 8. 17:29

*Python 3.x  / Jupyter Lab & PyCharm

*Writer is a novice of Kaggle and Machine learning.

*This page is created for personal study fulfillment so the contents possibly look a little bit messy and not organized things. 

 

Python 기준

초보자의 시점입니다.

개인 정리를 위한 것이라서 꾸준히 업데이트 됩니다.

 

 

 

 

1. data를 불러와서, .head()와 .info(), 그리고 .describe()로 칼럼들과 전체적인 내용들을 체크. 각 feature별 data type을 체크하고, 해당 칼럼이 어떤 내용을 담고 있는지, 내가 얻어낼 수 있는게 무엇인지, 각 feature를 조합해서 어떤 새로운 feature를 만들어낼 수 있을지를 체크한다.

 

category 상에서 min값과 max 값의 차이가 상당히 클 경우, sklearn의 MinMaxScaler, StandardScaler 등을 써서 scaling을 해주는 것도 고려를 한다. 

 

 

이때 칼럼별로 .nunique()로 고유한 값들이 몇개가 있는지를 체크하고, 의미있는 feature같은데 고유값의 개수도 적다면 label encoding 대신에 one-hot encoding도 고려를 해본다. (다른 encoding 방법들도 있다는데, 아직 초보자라서 이 이상은 어렵다)

 

 

2. .isnull().sum()로 결측치가 없는지 체크한다. 이때 -1, 0처럼 결측치처럼 안보이는 결측치가 있을 수 있으므로, 칼럼 하나하나를 보면서 체크하는게 좋다. 

 

null values가 있다면, 이걸 어떻게 채워줄 수 있을지를 생각한다. 

 

동시에, null values가 '정말로' 결측치인지, 아니면 missing data로 그저 해당 부분의 데이터가 없음-을 뜻하는 것인지를 파악해야 한다. 단순히 데이터 없음-을 NaN으로 처리한 경우일 수도 있기 때문이다. (때문에 Kaggle의 data 항목에서 description을 꼼꼼하게 읽자.)

 

 

3. .drop_duplicates()로 중복되는 데이터들을 지워준다.

 

 

4. 칼럼별로 skew()와 kurt()를 본다. skew가 너무 심하다면 numpy의 np.log1p()나 scipy의 boxcox1p()를 사용해서, 좀 더 정규 분포에 가깝게 만들어준다. 

 

 

5. correlation matrix는 linear한 관계만을 체크한다. 때문에 correlation matrix 상에서 target과 correlation이 낮게 나왔다고 해서 바로 드랍해버리면 안된다. 모델은 nonlinear한 relationship을 체크할 수 있기 때문에, feature importance를 찍어봤을 때, correlation matrix와는 다른 결과가 나올 수도 있다. 

 

 

6. correlation matrix 상에서 95 이상으로 관련성이 너무 높은 features가 있을 경우, 몇몇 features는 drop해준다. 상관성이 매우 높은 features 2개를 사용하는 것과 feature 1개를 사용하는 것이 큰 차이가 없고, feature 1개만 사용했을 때 computational cost가 좀 덜 들기 때문이다. 

 

 

 

 

 

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

레노버 초반 세팅  (0) 2022.10.31
[Reinforcement Learning] preliminaries  (0) 2018.11.04
Linear regression  (0) 2018.04.17
Tensor manipulation  (0) 2017.10.08
텐서플로 공부  (0) 2017.10.08
Comments