반응형
https://steadiness-193.tistory.com/70
https://steadiness-193.tistory.com/99
위 포스팅들에서 해보았으나
이번엔 sklearn.preprocessing 패키지의 OneHotEncoder을 이용해보자.
[One-Hot Encoding]
n개의 범주형 데이터를 n개의 비트(0, 1) 벡터로 표현
서로 다른 범주 데이터는 독립적인 관계라는 것을 나타낼 수 있음
[sklearn의 OneHotEncoder 주의할 점]
1. 판다스의 시리즈가 아닌 numpy 행렬을 입력해야함 → values 이용
2. 벡터 입력을 허용하지 않음 → reshape을 이용해 Matrix로 변환 필요
데이터 불러오기
open과 close를 원핫인코딩 해본다.
(1) OneHotEncoder 불러온 뒤 정의
sparse=True가 디폴트이며 이는 Matrix를 반환한다.
원핫인코딩에서 필요한 것은 array이므로 sparse 옵션에 False를 넣어준다.
sklearn.preprocessing 패키지의 OneHotEncoder를 불러왔다.
이를 ohe로 정의한다.
label의 shape 확인 및 reshape
위 주의할 점에 언급했듯이 벡터를 입력하면 안되므로
reshape을 이용해 (301, 1) 형태로 바꿔준다.
(2) 범주 찾기
fit으로 범주를 찾아낸다.
(3) 원핫인코딩 배열 리턴
transform을 이용하면 원핫인코딩이 된 배열을 반환받을 수 있다.
(4) categories_ 이용
위 transform의 결과만 보면 어떤 것이 0이고 1인지 알기 어렵다.
이때 쓰는 것이 categories_이다.
원핫인코딩된 배열의 순서는 close와 open이다.
categories_의 결과는 리스트로 한번 감싸져 있으므로
인덱싱으로 풀어낸 뒤
컬럼으로 이용해
데이터프레임으로 만들어 낼 수 있다.
(5) 결과 확인
이상없이 원본 데이터에 맞춰 원핫인코딩이 잘 된 것을 확인할 수 있다.
반응형
'Machine Learning > 전처리(Preprocessing)' 카테고리의 다른 글
Machine Learning - 랜덤으로 train과 test로 나누기 (0) | 2020.09.04 |
---|---|
Machine Learning - PCA (Principal Component Analysis, 주성분 분석) (0) | 2020.08.31 |
Machine Learning - Label Encoding (라벨 인코딩) (0) | 2020.08.26 |
Machine Learning - Scaling : Standard Scaling (Z-score) (0) | 2020.08.26 |
Machine Learning - Scaling : Min-Max Scaling (0) | 2020.08.26 |