Vectorize a matriz de caracteres 2D em colunas
Tenho uma matriz numpy 2D como a seguinte:
a=np.array([["Science", "Blue", 3],
["Math", "Red", 4],
["Math", "Red", 5],
["Science", "Red", 3]])
E eu preciso convertê-lo em valores numéricos na coluna, como o seguinte (saída desejada):
out=np.array([[0, 0, 0],
[1, 1, 1],
[1, 1, 2],
[0, 1, 0]])
No entanto, para interpretabilidade a jusante, também preciso ter uma saída para rastrear dos valores numéricos para os valores originais. Eu estava pensando algo assim:
trace_back_dict = {0: {0: "Science", 1: "Math"},
1: {0: "Blue", 1: "Red"},
2: {0: 3, 1: 4, 2: 5}}
Onde as chaves externas são os índices da coluna da matriz original e os ditados internos fornecem o mapeamento do valor numérico: caracter
Existe uma maneira fácil de fazer isso, de preferência algo emsklearn
style, onde eu posso fazer umfit_transform
, e depoistransform
(para fins de treinamento e teste)?
Eu estava olhandosklearn
'sLabelEncoder
, e essencialmente o que eu preciso é aplicar um diferente em cada coluna. Alguma sugestão de como fazer isso com eficiência?
Obrigado
Jack