Python의 NumPy 배열에 대한 원-핫 인코딩

Manav Narula 2023년1월30일
  1. NumPy 모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행
  2. sklearn모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행
  3. pandas모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행
  4. keras모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행
Python의 NumPy 배열에 대한 원-핫 인코딩

Python에는 기계 학습에 사용할 수있는 방대한 프레임 워크가 있습니다. 모델을 쉽게 훈련하고 테스트 할 수 있습니다. 그러나 범주 형 데이터의 경우 일부 알고리즘은 이러한 데이터 레이블로 작동 할 수 없으며 숫자 값이 필요합니다.

따라서 원-핫 인코딩은 알고리즘에서 사용하기 전에 데이터를 인코딩하는 데 많이 사용되는 기술입니다.

이 튜토리얼에서는 numpy 배열에서 원-핫 인코딩을 수행하는 방법을 배웁니다.

NumPy 모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행

이 방법에서는 인코딩 된 데이터를 포함하는 새 배열을 생성합니다. numpy.zeros()함수를 사용하여 필요한 크기의 0 배열을 만듭니다. 그런 다음numpy.arange()함수를 사용하여 해당 위치에서 0을 1로 대체합니다.

예를 들면

import numpy as np

a = np.array([1, 0, 3])
b = np.zeros((a.size, a.max() + 1))
b[np.arange(a.size), a] = 1
print(b)

출력:

[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]

eye()함수를 사용하여 배열에서 원-핫 인코딩을 수행 할 수도 있습니다. 기본 대각선에 1이 있고 기본적으로 0이있는 2 차원을 반환합니다. 이 방법을 사용하고 아래와 같이 1이 될 위치를 지정할 수 있습니다.

import numpy as np

values = [1, 0, 3]
n_values = np.max(values) + 1
print(np.eye(n_values)[values])

출력:

[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]

sklearn모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행

sklearn.preprocessing.LabelBinarizer는이 인코딩을 효율적으로 수행 할 수있는 Python에서 사용할 수있는 클래스입니다. 다중 레이블을 숫자 형식으로 변환하여 이진화하는 데 사용됩니다. transform()함수를 사용하여이 클래스의 객체를 사용하여 데이터를 변환합니다.

다음 코드는이를 설명합니다.

import sklearn.preprocessing
import numpy as np

a = np.array([1, 0, 3])
label_binarizer = sklearn.preprocessing.LabelBinarizer()
label_binarizer.fit(range(max(a) + 1))
b = label_binarizer.transform(a)
print(b)

출력:

[[0 1 0 0]
 [1 0 0 0]
 [0 0 0 1]]

pandas모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행

머신 러닝 알고리즘 용 데이터 세트는 일반적으로pandas데이터 프레임 형식입니다. 따라서pandas모듈은 데이터 인코딩을 수행 할 수있는 장비를 갖추고 있습니다. get_dummies()를 사용하여 범주 형 데이터 세트를 숫자 표시기로 변환하여 원-핫 인코딩을 수행 할 수 있습니다. 최종 결과는 DataFrame입니다.

예를 들면

import pandas as pd
import numpy as np

a = np.array([1, 0, 3])
b = pd.get_dummies(a)
print(b)

출력:

  0  1  3
0  0  1  0
1  1  0  0
2  0  0  1

keras모듈을 사용하여 Python의 NumPy 배열에서 원-핫 인코딩 수행

keras모듈은 Python의 머신 러닝에 널리 사용됩니다. 이 모듈의to_categorical()함수는 데이터에 대해 원-핫 인코딩을 수행 할 수 있습니다.

아래 코드 스 니펫은 방법을 보여줍니다.

from keras.utils.np_utils import to_categorical
import numpy as np

a = np.array([1, 0, 3])
b = to_categorical(a, num_classes=(len(a) + 1))
print(b)

출력:

[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn