728x90
반응형

머신러닝 모델은 문자 데이터를 인식하지 못한다. 이를 문자로 구성된 범주형 데이터는 숫자로 바꿔야 한다.

==> 범주형 데이터를 숫자 형태로 바꾸는 작업을 데이터 인코딩이라고 한다.

1. 레이블 인코딩

==> 범주형 데이터를 숫자로 일대일 매핑해주는 인코딩 방식

 

from sklearn.preprocessing import LabelEncoder #레이블 인코더

fruits = ['사과' , '블루베리' , '바나나' , '귤' , '블루베리' , '바나나' ,'바나나' , '사과']

label_encoder = LabelEncoder() # 레이블 인코더 생성

fruits_label_encoed = label_encoder.fit_transform(fruits)

print('레이블 인코딩 적용 후 데이터 ' , fruits_label_encoed)

레이블 인코딩 적용 후 데이터  [3 2 1 0 2 1 1 3]

 

2. One-Hot encoding

https://knowallworld.tistory.com/372

 

[PYTHON - 머신러닝_로지스틱선형회귀]★로지스틱 선형회귀★상관관계★원-핫 인코딩★정확도★

1. 로지스틱 회귀 ==> 로지스틱 회귀 또한 선형 회귀처럼 기본 분석 모델이다. ==>선형 회귀 분석은 연속된 변수를 예측하는 반면 , 로지스틱 회귀 분석은 Yes/No처럼 2가지로 나뉘는 분류 문제를 다

knowallworld.tistory.com

==> 여러 값중 하나만 활성화하는 인코딩이다.

 

==> 레이블 인코딩의 문제(서로 가까운 숫자를 비슷한 데이터로 판단하는 문제)를 해결한다.

변수의 값을 변수로 변환
One-Hot coding

from sklearn.preprocessing import LabelEncoder , OneHotEncoder #레이블 인코더 , 원 핫 인코더

fruits = ['사과' , '블루베리' , '바나나' , '귤' , '블루베리' , '바나나' ,'바나나' , '사과']

label_encoder = LabelEncoder() # 레이블 인코더 생성
onehot_encoder = OneHotEncoder()

fruits_label_encoed = label_encoder.fit_transform(fruits) # 레이블 인코더 적용

fruits_onehot_encoed = onehot_encoder.fit_transform(fruits_label_encoed.reshape(-1,1))
# reshape(-1,1) 메서드를 이용해 2차원으로 바꾸었다.
print('원-핫 인코딩 적용 후 데이터 ' , fruits_onehot_encoed.toarray())

원-핫 인코딩 적용 후 데이터  [[0. 0. 0. 1.]
 [0. 0. 1. 0.]
 [0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 1. 0.]
 [0. 1. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 0. 1.]]

 

pd.get_dummies(fruits)

원-핫 인코딩

출처 : 머신러닝·딥러닝 문제해결 전략

(Golden Rabbit , 저자 : 신백균)

※혼자 공부용

728x90
반응형

+ Recent posts