[TIL] 20.08.24

우주먼지·2020년 8월 24일
0

TIL

목록 보기
27/28

인코딩

범주형 데이터를 코드형 숫자값으로 변환해주는 것이다.

레이블 인코딩

카테고리 특성을 코드형 숫자 값으로 변환하는 것이다.

from sklearn.preprocessing import LabelEncoder

items = ['TV','냉장고','전자렌지','컴퓨터','선풍기','믹서']

# 인코딩 변환값
encoder = LabelEncoder()
encoder.fit(items)
labels = encoder.transform(items)

인코딩 반환값 : [0 1 4 5 3 2]
인코딩 클래스 : ['TV' '냉장고' '믹서' '선풍기' '전자렌지' '컴퓨터']

인코딩을 진행할 결과과 다음과 같이 출력된다. 숫자가 부여되는 순서는 트리로 생각하면 쉽게 알 수 있을 것이다.
이 경우는 인코딩 된 숫자값에 따라 가중치가 적용되기 때문에 성능이 떨어질 수 있다.

원-핫-인코딩

범주형 변수를 0 또는 1 값을 가진 하나 이상의 새로운 특성으로 바꿔주는 것이다.

from sklearn.preprocessing import OneHotEncoder
import numpy as np

items = ['TV','냉장고','전자렌지','컴퓨터','선풍기','선풍기','믹서','믹서']

# 먼저 숫자 값으로 변환
encoder = LabelEncoder().fit(items)
labels = encoder.transform(items)

# 2차원 데이터로 변화
labels = labels.reshape(-1, 1)

# 원-핫-인코딩 적용
encoder_oh = OneHotEncoder().fit(labels)
labels_oh = encoder_oh.transform(labels)
labels_oh.toarray()

array([[1., 0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0., 0.],
[0., 0., 0., 0., 1., 0.],
[0., 0., 0., 0., 0., 1.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0., 0.],
[0., 0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0., 0.]])

toarray를 사용하여 원-핫 인코딩이 적용된 내용을 볼 수 있다.
위에 결과처럼 데이터의 개수만큼의 feature을 만들어서 그 데이터의 위치만 1로 표기하고 나머지는 0으로 표기.

훈련세트와 테스트 세트의 볌주형 값이 같은 방식으로 표현되어야 하기 때문에 이러한 인코딩기법을 사용한다.

영화 관람 등급같은 것은 범주형이지만 순서가 있다. 이러한 경우는 연속형으로 할지 범주형으로 사용할지 사용할 알고리즘이나 풀려는 문제에 따라 잘 설정해야한다.

느낀점

  • 마지막 주라 그런지 뭔가 지친 느낌이 든다. 수업에 집중이 잘 안되고 어떻게 앞으로 해야할지에 대한 걱정만 많다.
  • 수업은 끝나가는데 코로나가 계속 커져서 걱정이다.
  • 이러한 내용이 도움이 되어 취업을 잘 했으면 좋겠다.
profile
안녕하세요 ㅎㅎ

0개의 댓글