파이썬으로 머신러닝을 하기 전 데이터를 인코딩해주는 것은 중요하다. 사이킷런의 머신러닝 알고리즘은 문자열 값을 입력 값으로 허용하지 않기 때문에 문자형은 숫자형으로 인코딩해야한다.
인코딩 방식에는 레이블 인코딩과 원-핫 인코딩이 있다.
레이블인코딩
판매목록 | 가격 |
꼬북칩 | 1500 |
꼬깔콘 | 1000 |
빼빼로 | 1300 |
판매목록 | 가격 |
0 | 1500 |
1 | 1000 |
2 | 1300 |
레이블인코딩의 단점은 꼬북칩, 꼬깔콘, 빼빼로가 각각 0, 1, 2 가 되었는데 각각 상관성이 없다는 것이다. 그리고 머신러닝 알고리즘에서 0을 작게, 2를 크게 인식하다 보니 중요성이 꼬북칩보다 빼빼로가 더 크게 나올 수 있다. 원-핫인코딩은 레이블 인코딩의 단점을 보완하려고 나왔다.
원-핫 인코딩
원-핫 인코딩은 feature 값의 유형에 따라 해당하는 컬럼에 1을 표기하고 나머지 컬럼에 0을 표기하는 방식이다. 한번 밑에 테이블로 표현해보겠다.
판매목록 | 가격 |
꼬북칩 | 1500 |
꼬깔콘 | 1000 |
빼빼로 | 1300 |
판매목록_꼬북칩 | 판매목록_꼬깔콘 | 판매목록_빼빼로 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 1 |
원-핫 인코딩은 해당하는 위치에 1을 넣어주고 나머지는 0을 넣어준다.