Python 튜토리얼

Lv3 전처리 4/4 python 파이썬 원-핫 인코딩

2021.07.23 10:26 8,598 조회

이번 시간에는 “One-Hot Encoding”을 진행합니다!


컴퓨터는 “문자”로 된 데이터를 학습할 수 없습니다.

그래서 “type”같은 피쳐들은 컴퓨터가 읽어서 학습 할 수 있도록 “인코딩”을 해주어야 합니다.


그래서 인코딩의 방법 중 하나인 “One-Hot Encoding”을 소개해드려고 합니다!


One-Hot Encoding은 말 그대로, ‘하나만 Hot 하고, 나머지는 Cold한 데이터”라는 의미입니다.

즉, 자신에게 맞는 것은 1로, 나머지는 0으로 바꾸어 줍니다.


예를 들어볼게요!

아래의 “출신 지역”이라는 변수는 문자로 되어있기 때문에, 컴퓨터가 이해할 수 없습니다.

그래서 컴퓨터가 이해할 수 있도록 숫자로 바꿔줘야 하죠.


이렇게 말입니다.


이제 이해가 되시나요?


자신에 해당 되는 값은 1인 "Hot"한 값을 주고, 나머지는 0인 "Cold"한 값을 주는 방법입니다.


이제 실습으로 따라해보시죠.


-----------------------------------------------------------------------------------------------------------------------------------------

# "OneHotEncoder"를 "encoder"라는 변수에 저장해보세요


encoder = OneHotEncoder()


# "encoder"를 사용해 train의 "type" 피쳐를 학습시켜보세요


encoder.fit(train[['type']])


# "encoder"를 사용해 train의 "type"피쳐를 변환해 "onehot"이라는 변수에 저장해보세요

onehot = encoder.transform(train[['type']])


# "onehot"이라는 변수를 array 형태로 변환해 보세요


onehot = onehot.toarray()


# "onehot"이라는 변수를 DataFrame 형태로 변환해 보세요


onehot = pd.DataFrame(onehot)


# encoder의 "get_feature_names()"를 사용해 column 이름을 바꿔보세요

onehot.columns = encoder.get_feature_names()


# onehot을 원본데이터인 train에 병합시켜보세요


onehot = pd.concat([train, onehot], axis = 1)


# train의 "type" 변수를 제거해주세요

train = train.drop(columns = ['type'])

-----------------------------------------------------------------------------------------------------------------------------------------

이제 인코딩까지 마무리 했으니, 다음 시간부터는 Wine Data를 사용해서 모델링을 해보겠습니다


[Colab 실습 링크]


↩️ 오늘의 파이썬 리스트

#데이콘_101 #AI #머신러닝 #딥러닝 #파이썬 #파이선  #데이터분석 #데이터사이언티스트 #코랩 #Python  #colab #kaggle #pandas #numpy #sckit-learn # read_csv



로그인이 필요합니다
0 / 1000
mkk4726
2021.07.27 22:20

done!

세라자데
2021.09.05 16:00

done

그린티
2021.09.08 15:17

done

DSJY
2021.09.13 16:43

phu
2021.09.13 22:22

매미인턴
2021.09.15 17:50

다욤
2021.09.19 00:53

찬찬이
2021.09.24 19:51

Holte
2021.09.30 20:04

changhyeon
2021.10.08 18:09

done

왼쪽눈썹왁싱
2021.10.31 09:58

PYB
2021.11.07 11:50

yulia.
2021.11.24 22:24

sotanfdl
2021.12.14 22:51

moran
2021.12.27 17:04

도톤
2021.12.27 17:53

dbnoid
2022.01.18 19:33

hijihyo
2022.01.21 16:45

done

djffjdEndEkd
2022.01.28 19:13

done

호랭이띠
2022.01.29 19:08

done

하랴랴
2022.02.28 18:52

done

ChimChim
2022.03.06 00:00

acebed
2022.03.10 18:00

done

kimgugu
2022.03.27 10:56

Kdata
2022.04.19 09:44

krooner
2022.05.19 15:26

하삼색
2022.05.22 20:16

? 이대로 따라하면 onehot column이 안 생기는 것 같은데요...제가 잘못 이해하고 있나요?

khloee
2022.05.26 15:10

jaka
2022.06.19 02:03

JCCHOI
2022.06.22 07:53

실습 중 이 부분이 잘못된 게 아닌가 해서 댓글 남겨봅니다.

# ------------------- 기존 코드 -------------------
# onehot을 원본데이터인 train에 병합시켜보세요

onehot = pd.concat([train, onehot], axis = 1)
onehot.head()


# ------------------- 변경 코드 -------------------
# onehot을 train에 병합하려면 다음과 같이 작성되어야 할 것 같습니다.
train = pd.concat([train, onehot], axis = 1)
train.head()

제가 잘못 이해한 것이라면 알려주세요.
감사합니다.

양현모든지쓸어버리겠다
2022.07.07 11:41

Y2J
2022.07.07 16:59

간지나는패션
2022.08.12 16:32

done

baeksh0330
2022.10.02 17:25

엿장수
2022.10.12 22:17

gnt0000
2022.10.30 21:27

done

sk100
2022.11.01 23:02

done

yun_
2022.11.14 20:12

done

savvyall
2022.11.30 15:52

done

히히로켓발사
2022.12.29 02:32

train=pd.concat([train,onehot],axis=1)

카르루알룰
2023.01.06 10:27

done

highllight
2023.01.16 16:10

김시옷
2023.05.29 00:38

done+
get_feature_names_out()

sienna
2023.11.14 16:25

기존코드
onehot.columns = encoder.get_feature_names()

변경코드
onehot.columns = encoder.get_feature_names_out()