문자열 데이터를
레이블 인코딩 또는 원핫 인코딩 하기 (LabelEncoder(), OneHotEncoder())
데이터를 학습하기 위해서는 방정식에 대입되어야 하는데
방정식은 수학식이므로 데이터는 모두 숫자로 되어 있어야 한다
따라서 문자열 데이터를 숫자로 바꿔줘야 한다
필요한 라이브러리 임폴트
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' )
X = ct.fit_transform(X)
'MACHINE | DEEP LEARNING > Data Preprocessing' 카테고리의 다른 글
[AI] date 컬럼 오브젝트에서 datetime으로 변경하기, 요일 정보 컬럼으로 넣기 _판다스 to_datetime() (0) | 2024.04.24 |
---|---|
[AI] 데이터 불균형 맞추기 _SMOTE() (0) | 2024.04.16 |
[AI] Training, Test용 데이터 나누기 _train_test_split() (0) | 2024.04.16 |
[AI] 데이터 정규화, 표준화 Feature Scaling (0) | 2024.04.16 |
[AI] 인공지능 만들기 전 데이터 처리하기 (0) | 2024.04.16 |