[심층학습] 범주형데이터 처리

eunzine·2025년 5월 17일

Colab

목록 보기
3/4

원 핫 인코딩(One-Hot-Encoding)

  • 범주형 데이터를 단 하나의 값만 1이고 나머지는 0으로 매핑시킴
  • 단점 : 클래스(속성)가 많은 경우 벡터 차원이 커짐

1. LaeblEncoder (정수인코딩)

  • numpy배열 형태로 넣어야함. ⭐데이터프레임은 처리 못함
    ➡️ 데이터프레임의 한 속성.values()로 값 뽑아낸 뒤 사용하고 열추가 하던지 ..!
  • 주로 정답부분 인코딩에 사용(1차원 배열 형태기에)
  • 문자열 경우 알파벳순으로 숫자순서 정해짐
  • 라이브러리
from sklearn.preprocessing import LabelEncoder
  • 적용함수
    .fit_transform() : 변환함수, 반환값은 1차원배열
  • 예시
import numpy as np
X = np.array([['Korea', 44, 7200],
             ['Japan', 27, 4800],
             ['China', 30, 6100]]) #numpy 2차원형태로 데이터 저장
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
X[:,0] = labelencoder.fit_transform(X[:,0])
X
------------------------------------------------------------------
array([['2', '44', '7200'],
       ['1', '27', '4800'],
       ['0', '30', '6100']], dtype='<U21')

X[ : ,0] 해석

  • 0번째 열의 모든 행을 가져와

응용
➡️ X[1, : ]는 첫번째 행의 모든 열을 다 가져와
➡️ X[0, 0:2] 는 첫번째 행에서 0번~1번 열을 가져와

2. 원 핫 인코딩(OneHotEncoder)

  • Numpy, DataFrame 모두 사용가능
  • 주로 속성 인코딩에 사용 (2차원배열 형태기에)
  • 라이브러리
from sklearn.preprocessing import OneHotEncoder
  • 적용함수
    .fit_transform : 변환함수, 반환값은 2차원배열
    💡 2차원배열로 전달해줘야지 변형해줌
    .toarray : numpy 배열로 변환함수
    💡fit_transform이 좀 이상한 형태로 반환해줘서 numpy 배열형태로 정리해야함
import numpy as np
X = np.array([['Korea', 44, 7200],
             ['Japan', 27, 4800],
             ['China', 30, 6100]]) #numpy 2차원형태로 데이터 저장

from sklearn.preprocessing import OneHotEncoder

onehotencoder = OneHotEncoder()
#print(X[:,0]) # ['Korea' 'Japan' 'China'] 이거 열을출력해도 일차원으로 나옴
XX = onehotencoder.fit_transform(X[:,0].reshape(-1,1)).toarray()

X = np.delete(X, [0], axis = 1) #원래 범주형으로 있던 0번째 열 삭제
X = np.concatenate((XX,X), axis = 1) #XX랑 X 결합
print(X)

3. to_categorical()

0개의 댓글