📝데이터 레이블 인코딩, 원핫 인코딩하기
데이터를 학습하기 위해서는 방정식에 대입되어야 하는데
방정식은 수학식이므로 데이터는 모두 숫자로 되어 있어야 한다
따라서 문자열 데이터를 숫자로 바꿔줘야 한다 그 작업을 레이블 인코딩이라고 한다
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)
'인공지능 > 데이터 전처리' 카테고리의 다른 글
[데이터 전처리] 데이터 불균형 맞추기 SMOTE() (0) | 2022.12.02 |
---|---|
[데이터 전처리] Training/Test용 데이터 나누기 train_test_split() (0) | 2022.12.01 |
[데이터 전처리] 데이터 정규화, 표준화 Feature Scaling (0) | 2022.12.01 |
[데이터 전처리] 인공지능 만들기 전 준비과정 데이터 전처리하기 (0) | 2022.11.30 |
댓글