Codificação One-Hot em Matriz NumPy em Python

Manav Narula 30 janeiro 2023
  1. Use o módulo NumPy para realizar a codificação One-Hot em um array NumPy em Python
  2. Use o módulo sklearn para realizar a codificação One-Hot em um NumPy Array em Python
  3. Use o Módulo pandas para realizar a codificação One-Hot em um NumPy Array em Python
  4. Use o módulo keras para realizar a codificação One-Hot em um NumPy Array em Python
Codificação One-Hot em Matriz NumPy em Python

Python tem uma vasta estrutura disponível para aprendizado de máquina. Podemos treinar e testar modelos facilmente. No entanto, quando se trata de dados categóricos, alguns algoritmos não podem operar com esses rótulos de dados e exigem valores numéricos.

Portanto, a codificação one-hot é uma técnica altamente usada para codificar dados antes de usá-los em um algoritmo.

Neste tutorial, aprenderemos como realizar a codificação one-hot em matrizes numpy.

Use o módulo NumPy para realizar a codificação One-Hot em um array NumPy em Python

Neste método, iremos gerar um novo array que contém os dados codificados. Usaremos a função numpy.zeros() para criar um array de 0s do tamanho necessário. Em seguida, substituiremos 0 por 1 nos locais correspondentes, usando a função numpy.arange().

Por exemplo,

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)

Resultado:

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

Também podemos usar a função eye() para realizar a codificação one-hot em matrizes. Ele retorna um 2-Dimensional com 1 na diagonal principal e 0 em outros lugares por padrão. Podemos usar esse método e especificar os locais que queremos que os 1s estejam, conforme mostrado abaixo.

import numpy as np

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

Resultado:

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

Use o módulo sklearn para realizar a codificação One-Hot em um NumPy Array em Python

O sklearn.preprocessing.LabelBinarizer é uma classe disponível em Python, que pode realizar esta codificação de forma eficiente. É usado para binarizar vários rótulos, convertendo-os para a forma numérica. Usaremos a função transform() para converter os dados usando um objeto desta classe.

O código a seguir explica isso.

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)

Resultado:

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

Use o Módulo pandas para realizar a codificação One-Hot em um NumPy Array em Python

Conjuntos de dados para algoritmos de aprendizado de máquina geralmente estão na forma de um DataFrame pandas. Portanto, o módulo pandas está bem equipado para realizar a codificação de dados. O get_dummies() pode ser usado para converter um conjunto de dados categórico em indicadores numéricos, assim, realizando a codificação one-hot. O resultado final é um DataFrame.

Por exemplo,

import pandas as pd
import numpy as np

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

Resultado:

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

Use o módulo keras para realizar a codificação One-Hot em um NumPy Array em Python

O módulo keras é amplamente utilizado para Aprendizado de Máquina em Python. A função to_categorical() deste módulo pode realizar uma codificação one-hot nos dados.

O trecho de código abaixo mostra como.

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)

Resultado:

[[0. 1. 0. 0.]
 [1. 0. 0. 0.]
 [0. 0. 0. 1.]]
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