[파이썬 머신러닝] 3. 싸이킷런(3) - 데이터 전처리

2021. 3. 8. 22:56프로그래밍-AI & 빅데이터/머신러닝

<데이터 인코딩>

 

1. Label Encoding: 카테고리 피처를 코드형 숫자로 변환(ex) 메로나1: 1, 스크류바: 2...)

사이킷런의 LabelEncoder를 이용

단, 단순한 코드일 뿐이지만 어쨋든 숫자임으로 크고작음을 인식할 우려가 있다.

이러한 이유로 회귀같은 알고리즘에선 사용되지 않는다

 

2. One-Hot Encoding: 크기에 따른 가중치 설정을 방지하기 위해, 배열을 만들고 해당 컬럼만 1로 표시하는 방법

이 경우에는 일단 label encoder를 통해 숫자로 데이터를 바꾼 후, 인코딩을 한번 더 진행한다

 

판다스에 굉장히 편한 api가 있었다....

굳이 인코더를 두개나 쓸 필요가 없다

 

 

<피쳐 스케일링과 정규화>

 

- 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업

 

Standardization: 기존value에서 평균을 빼고 표준편차로 나누기

Normalization: 기존 value에서 최소값을 빼고, 이를 (최대값-최소값)으로 나누기

vector Normalization: 개별 벡터의 크기를 맞추기 위한 변환. 즉 3차원에서 단위 벡터 구하는 방식

 

- 학습데이터에서 fit()을 사용했다면, 테스트 데이터에서도 fit을 사용했던 스케일러를 그대로 사용해야함, 그렇지 않으면 서로 다른 기준으로 fit을 하게되어 스케일링이 의미가 없게됨

- 따라서 전체 데이터의 스케일링 변환 후 학습과 테스트 데이터를 분리하는게 좋음

 

1) StandardScaler

 

 

2) MinMaxScaler : 0과 1 사이의 값으로 변환