One-Hot Encoding : 예제 코드와 함께 간단히 리뷰
1. 원 핫 인코딩 시행
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
train_encoded = ohe.fit_transform(train[['Position']]).toarray()
test_encoded = ohe.fit_transform(test[['Position']]).toarray()
print(train_encoded)
- OneHotEncoder() 객체를 생성 : ohe
- fit_transform() 메서드를 사용하여 학습 & 인코딩 수행
▶︎ train 데이터프레임의 Position 피처(feature)를 입력으로 넣음
▶︎ 단, OneHotEncoder는 2차원 배열을 입력으로 받아야 함
▶︎ toarray() 함수를 사용하여 희소행렬(Sparse Matrix)을 밀집 배열(Dense Array)로 변환
ohe.fit_transform(train[['Position']]) 결과는 희소 행렬(sparse matrix)로 반환되며,
이를 toarray() 메서드를 사용하여 밀집 행렬(dense matrix) 형태의 NumPy 배열로 변환
그 후, 이 결과를 train_encoded 변수에 저장
2. 원 핫 인코딩 결과를 데이터프레임으로 생성
원-핫 인코딩된 데이터를 가지고 새로운 데이터프레임을 생성하고, 열 이름(column names)을 설정
train_encoded_df = pd.DataFrame(train_encoded, columns=ohe.get_feature_names(['Position']))
test_encoded_df = pd.DataFrame(test_encoded, columns=ohe.get_feature_names_out(['Position']))
- train_encoded는 'train' 데이터프레임의 'Position' 피처를 원-핫 인코딩한 결과를 가지고 있는 2차원 배열이다.
이 배열을 활용하여 새로운 데이터프레임을 생성한다 - columns 인자에는 get_feature_names_out() 함수를 이용하여 Position 인자를 전달
- ohe.get_feature_names_out() 메서드를 사용하여 원-핫 인코딩된 열 이름을 가져온다
- 여기서 ['Position'] 인자를 전달함으로써 기존 열 이름 Position에 접두어로 사용된다
- 결과적으로, 원-핫 인코딩된 열 이름은 Position_범주값 형태로 생성된다
3. pd.concat() 함수를 사용하여 train, train_encoded_df 두 데이터프레임을 합치기
train = pd.concat([train, train_encoded_df], axis=1)
test = pd.concat([test, test_encoded_df], axis=1)
train.head()
728x90
'Machine Learning' 카테고리의 다른 글
statsmodels 회귀분석 (0) | 2023.09.01 |
---|---|
object 로 된 숫자를 수치(정수)형으로 바꾸기 (0) | 2023.08.31 |
회귀 트리와 선형 회귀 (0) | 2023.08.23 |
[회귀] 자전거 대여 수요 예측 (0) | 2023.08.23 |
데이터 분리 : train 데이터와 Validation 데이터 (0) | 2023.08.17 |