Codificação One-Hot em Matriz NumPy em Python
- Use o módulo NumPy para realizar a codificação One-Hot em um array NumPy em Python
-
Use o módulo
sklearn
para realizar a codificação One-Hot em um NumPy Array em Python -
Use o Módulo
pandas
para realizar a codificação One-Hot em um NumPy Array em Python -
Use o módulo
keras
para realizar a codificação One-Hot em um NumPy Array 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 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