목차
원핫인코딩(One Hot Encoding)이란?
원 핫 인코딩(One Hot Encoding)은 카테고리 변수(Categorical Variable)를 머신러닝에서 처리할 수 있는 Binary 벡터(Vector) 값으로 변환해주는 방법을 말 합니다.
선형 회기 예를 들어 설명하겠습니다.
위 수식1은 다중 선형 회기 수식입니다. X, Y 값은 사용자가 가지고 있는 데이터 셋의 값입니다. 만일 입력 값 중에 하나가 색상의 값으로 빨강, 노랑, 파랑 색으로 들어오면 해당 입력은 범주형 변수(Categorical variable)이므로 Binary로 변환해야 합니다.
그래서 아래와 같이 표현할 수 있습니다.
빨강 [1 0 0], 파랑 [0 1 0], 노랑 [0 0 1] 로 벡터 값으로 변환해서 처리 할 수 있습니다.
다음으로 중요한 원핫 인코딩의 특성은 벡터 값은 Orthogonal 해야 합니다. 즉, 결과 벡터 간에 직교성을 가져서 독립적인 값을 가져야 하는 것입니다. [0 0 1], [0 1 1]과 같은 값을 가지면 안됩니다.
로지스틱 회귀나 소프트멕스 머신러닝 방식에서 Binary Vector 출력을 받는 경우 원핫인코딩을 유용하게 사용할 수 있습니다.
파이썬 IRIS 데이터셋으로 원핫인코딩 예제 실습
IRIS 데이터셋 사용방법 및 데이터셋(Dataset)에 대한 설명은 링크를 참조하시면 됩니다(https://scribblinganything.tistory.com/678).
예제 코드>>
import pandas as pd
iris_data = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',
header=None, names=['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species'])
print(iris_data)
iris_encoded = pd.get_dummies(iris_data, columns=['species'])
print(iris_encoded)
3번 라인: 웹에 저장된 iris 값을 불러 옵니다.
6번 라인: 원 핫 인코딩(One Hot Encoding) 적용 전 값을 출력 합니다.
8번 라인: get_dummies 함수를 사용해서 species의 값을 binary vector로 변경합니다.
10번 라인: 원 핫 인코딩(One Hot Encoding) 적용 후 값을 출력 합니다.
결과>>
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
.. ... ... ... ... ...
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica
[150 rows x 5 columns]
sepal_length sepal_width petal_length petal_width species_Iris-setosa species_Iris-versicolor species_Iris-virginica
0 5.1 3.5 1.4 0.2 1 0 0
1 4.9 3.0 1.4 0.2 1 0 0
2 4.7 3.2 1.3 0.2 1 0 0
3 4.6 3.1 1.5 0.2 1 0 0
4 5.0 3.6 1.4 0.2 1 0 0
.. ... ... ... ... ... ... ...
145 6.7 3.0 5.2 2.3 0 0 1
146 6.3 2.5 5.0 1.9 0 0 1
147 6.5 3.0 5.2 2.0 0 0 1
148 6.2 3.4 5.4 2.3 0 0 1
149 5.9 3.0 5.1 1.8 0 0 1
[150 rows x 7 columns]
species 값이 binary vector 값으로 변경 되었습니다.
'여러가지공부 > 머신러닝(Machine Learning)' 카테고리의 다른 글
[머신러닝] 편형(Bias)와 분산(Variance)란? 파이썬 예제 코드로 이해하기(Trade off) (0) | 2023.03.31 |
---|---|
[머신러닝]일반화(Generalization), 과적합(Overfitting, Underfitting)이란? 파이썬 코드 예제(그래프 포함) (0) | 2023.03.30 |
[머신러닝]소프트맥스 회귀란?(Softmax Regression) (0) | 2023.03.23 |
[머신러닝]로지스틱회귀란?(Logistic Regression, 시그모이드 함수) (0) | 2023.03.19 |
[머신러닝]퍼셉트론(Perceptron)이란? (MLP(Multi Layer), 활성화 함수, 사용목적, 풀이) (0) | 2023.03.08 |