본문 바로가기
인공지능/데이터 전처리

[데이터 전처리] 데이터 레이블 인코딩, 원핫 인코딩 하기 LabelEncoder(), OneHotEncoder()

by coding_su 2022. 12. 1.

📝데이터 레이블 인코딩, 원핫 인코딩하기

데이터를 학습하기 위해서는 방정식에 대입되어야 하는데

방정식은 수학식이므로 데이터는 모두 숫자로 되어 있어야 한다
따라서 문자열 데이터를 숫자로 바꿔줘야 한다 그 작업을 레이블 인코딩이라고 한다

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer

 

LabelEncoder() : 문자열 데이터를 정렬해서 순서대로 0부터 시작하는 숫자로 바꿔준다

※ 카테고리컬 데이터의 갯수가 3개 이상일 때는 Label Encoding으로 학습하면 학습이 잘 안된다

 3개 이상의 카테고리컬 데이터는 One-Hot Encoding을 이용해서 처리하면 학습이 잘 된다

# 변수로 저장해서 사용한다
encoder = LabelEncoder()
X['컬럼'] = encoder.fit_transform(X['컬럼'])

OneHotEncoder() : 문자열 데이터를 정렬해서 순서대로 0부터 시작하는 숫자로 바꿔 컬럼을 만들어준다

※ 원핫 인코딩한 결과가 맨 앞 컬럼으로 나온다

 원핫 인코딩을 하면 카데코리컬 데이터만큼 컬럼이 늘어난다

# 원핫 인코딩으로 바꾸고 싶은 컬럼의 인덱스를 []에 입력한다
# 바꾸고 싶은 컬럼이 여러개면 리스트 안에 인덱스만 써주면 된다 예) [1, 4, 5]
ColumnTransformer( [( 'encoder', OneHotEncoder(),[컬럼 인덱스] )], remainder='passthrough' )
# remainder='passthrough' > 원핫 인코딩이 아닌 컬럼은 그냥 둔다

# 변수에 저장하여 사용한다
ct = ColumnTransformer( [( 'encoder', OneHotEncoder(),[0] )], remainder='passthrough' )
ct.fit_transform(X.values)

댓글