Note
데이터 전처리 본문
1. 데이터 인코딩
(1) 레이블 인코딩(label encoding)
말 그대로 레이블을 인코딩해서 값을 변환해주는 것이다.
사이킷런을 통해서 라이브러리를 임포트한다. 리스트 안에 있는 사물들을 items라는 객체에 저장한다.
encoder 객체를 생성해서 LabelEncoder에 저장한다.
. fit을 수행해서 transform 전에 틀을 맞춰 주는 역할을 하고 transform을 통해 label 인코딩을 수행한다.
classes_를 사용해서 인코딩의 실제 값을 알 수 있다. 또한 inverse_를 사용해서 원래대로 돌리는 디코딩을 나타낼 수 있다.
(2) 원 - 핫 인코딩(One-Hot encoding)
원 - 핫 인코딩이란 ?
원-핫 인코딩은 단어 집합의 크기를 벡터의 차원으로 하고, 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 다른 인덱스에는 0을 부여하는 단어의 벡터 표현 방식이다. 이렇게 표현된 벡터를 원-핫 벡터(One-Hot vector)라고 한다.
원-핫 인코딩을 두 가지 과정으로 정리하면
(1) 각 단어에 고유한 인덱스를 부여한다. (정수 인코딩)
(2) 표현하고 싶은 단어의 인덱스의 위치에 1을 부여하고, 다른 단어의 인덱스의 위치에는 0을 부여한다.
[출처 : 위키 독스]
- 사이킷런에서의 원 - 핫 인코딩
첫 번째, 먼저 숫자 값으로 변환을 위해 레이블 인코더로 변환한다.
두 번째, reshape를 사용해 2차원 데이터로 변환한다.
세 번째, 원-핫 인코딩을 적용한다.
- 판다스에서 원 - 핫 인코딩
복잡한 과정이 단 한 줄로 판다스에서 원 - 핫 인코딩이 가능하다.
- 원 - 핫 인코딩의 한계
단어의 개수가 늘어날수록, 벡터를 저장하기 위해 필요한 공간이 계속 늘어난다는 단점이 있다. 나타내고자 하는 것 이외에는 모두 0으로 표현되기 때문에 데이터가 많을수록 벡터의 크기가 커지므로 비효율적이다.
단어의 유사도를 표현하지 못한다는 단점이 있다. 어떤 단어와 더 유사한지도 알 수 없고 검색 시스템에서 연관 검색어를 보여줄 수 없다.
2. 정규화
(1) 표준 정규화
필요한 라이브러리를 부르고 데이터를 로드한다. 그 이후 StandardScaler 객체를 생성하고 데이터 셋 변환하고 transform( ) 호출한다.
transform( ) 시 scale 변환된 데이터 셋이 numpy ndarry로 반환되어 이를 DataFrame으로 변환해준다.
데이터를 확인해보면 표준 정규화가 이루어진 것을 볼 수 있다.
(2) Min - Max
표준 정규화의 과정과 유사하며 객체를 MinMaxScaler 객체를 생성해주고 이후의 과정들은 같다.
출력해 본 결과물을 보면 Min - Max 정규화가 이루어진 것을 볼 수 있다.
'Machine Learning' 카테고리의 다른 글
Gradient Vanishing & Exploding (0) | 2021.09.15 |
---|---|
모델 과적합을 막는 방법 (2) | 2021.09.08 |
교차 검증 (0) | 2021.05.07 |
학습 / 테스트 데이터 (0) | 2021.05.06 |
Numpy (넘파이) (0) | 2021.05.06 |