Data Science/Pandas & Numpy&Scikit-learn
[인코딩,sklearn] One-Hot Encoding
상어군
2021. 9. 14. 10:07
반응형
인코딩 방법에는 여러가지가 존재한다.
본 포스팅에서는 가장 널리 쓰이는 One-Hot 인코딩을 사용한다.
샘플 데이터 생성
import pandas as pd
df=pd.DataFrame({
'ID':[1,2,3,4,5],
'name':['아메리카노','바닐라라떼','아메리카노','민트초코','아메리카노'],
'tumbler':['N','Y','Y','N','N']
})
print(df)
컬럼별 데이터 타입 살펴보기
print(df.dtypes)
범주형 데이터 타입만 살펴보기 (categorical, object)
categorical_list = df.dtypes[df.dtypes == "object"].index.tolist()
print("Categorical features: ", categorical_list)
범주형 데이터 One-Hot 인코딩
from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder()
enc.fit(df[categorical_list])
encoded_df = pd.DataFrame(enc.transform(df[categorical_list]).toarray(),
columns=enc.get_feature_names(categorical_list))
print(encoded_df)
기존 데이터프레임에 합치기
encoded_df에는 범주형 컬럼에 대한 One-Hot 인코딩 결과가 들어있다.
기존 데이터프레임 df에서 범주형 컬럼을 삭제(drop)하고 수치형 컬럼만 남긴다.
그리고 두 데이터프레임을 합친다(concat).
df = df.drop(categorical_list, axis=1)
df = pd.concat([df,encoded_df],axis=1)
print(df)
인코더에 fit된 범주형 데이터 리스트 보기
print(enc.categories_)
반응형