한국 경제신문 with toss bank - 중간 프로젝트_( 2 )
비금융 데이터 그 중에서 업종별 이용 금액과 횟수에 중점을 두어연체 위험도를 예측하는 과제에서
모델을 돌리기 전에 one hot encoder, ordinal encoder, standard scaling, PCA를 사용해서
모델이 쉽게 데이터를 이해하도록 수정하였는데요.
제가 one hot encoder, ordinal encoder를 직접 수행하지 않았다 보니 헷갈리는 부분이 많아
정리해보려고 합니다.
OrdinalEncoder
- 용도: 여러 개의 범주형 열을 가진 데이터프레임에서 각 열의 고유한 카테고리를 정수 값으로 변환합니다.
- 특징: 카테고리 간에 상대적인 순서가 있을 때 사용합니다. "low", "medium", "high"와 같은 순서가 있는 데이터에 적합합니다.
- 입력 데이터: 2차원 배열 또는 데이터프레임 (여러 열을 동시에 변환 가능).
- 출력 데이터: 정수 값으로 변환된 2차원 배열 또는 데이터프레임.
from sklearn.preprocessing import OrdinalEncoder
data = [['low'], ['medium'], ['high']]
encoder = OrdinalEncoder()
encoded_data = encoder.fit_transform(data)
print(encoded_data)
LabelEncoder
- 용도: 주로 타깃 변수를 정수로 변환할 때 사용합니다. 하나의 열만 처리할 수 있습니다.
- 특징: 순서와 상관없이 범주형 데이터를 정수로 변환합니다. 예를 들어, 타깃 레이블 "cat", "dog", "fish"와 같은 경우에 사용됩니다.
- 입력 데이터: 1차원 배열 또는 리스트 (단일 열).
- 출력 데이터: 정수 값으로 변환된 1차원 배열.
from sklearn.preprocessing import LabelEncoder
data = ['cat', 'dog', 'fish']
encoder = LabelEncoder()
encoded_data = encoder.fit_transform(data)
print(encoded_data)
OneHotEncoder
- 용도: 범주형 데이터를 이진 벡터로 변환하여, 각 범주가 별도의 차원으로 표현됩니다.
- 특징: 카테고리 간의 순서가 없을 때 적합합니다. 각 카테고리는 이진 벡터로 표현되어, 모델이 카테고리 간의 순서를 잘못 해석하는 것을 방지합니다.
- 입력 데이터: 2차원 배열 또는 데이터프레임 (여러 열을 동시에 변환 가능).
- 출력 데이터: 원-핫 인코딩된 2차원 배열 또는 희소 행렬.
from sklearn.preprocessing import OneHotEncoder
data = [['red'], ['green'], ['blue']]
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform(data).toarray()
print(encoded_data)
종합
인코더 | 용도 | 순서 고려 | 입력 데이터 형식 | 출력 데이터 형식 |
OrdinalEncoder | 독립 변수를 정수로 변환 | 순서를 고려할 수 있음 | 2차원 배열 또는 데이터프레임 | 정수 값으로 변환된 2차원 배열 또는 데이터프레임 |
LabelEncoder | 주로 타깃 변수를 정수로 변환 | 순서 고려하지 않음 | 1차원 배열 또는 리스트 | 정수 값으로 변환된 1차원 배열 |
OneHotEncoder | 독립 변수를 원-핫 벡터로 변환 | 순서 고려하지 않음 | 2차원 배열 또는 데이터프레임 | 원-핫 인코딩된 2차원 배열 또는 희소 행렬 |
참고 자료
https://velog.io/@malangcow/OrdinalEncoder%EC%99%80-OneHotEncoder%EC%9D%98-%EC%B0%A8%EC%9D%B4
OrdinalEncoder와 OneHotEncoder의 차이
OrdinalEncoder와 OneHotEncoder는 범주형 데이터를 수치형 데이터로 변환하는 인코딩 방법 중 두 가지입니다. 그러나 두 방법 간에는 중요한 차이점이 있습니다.OneHotEncoder는 범주형 데이터의 카테고리
velog.io
https://stackoverflow.com/questions/50473381/scikit-learns-labelbinarizer-vs-onehotencoder
Scikit-learn's LabelBinarizer vs. OneHotEncoder
What is the difference between the two? It seems that both create new columns, which their number is equal to the number of unique categories in the feature. Then they assign 0 and 1 to data points
stackoverflow.com