Exemples de comment transformer (encoder) une variable qualitative en variable quantitative avec scikit learn en python:
Matrice d'entrée ("input matrix")
Soit par exemple la matrix X suivante:
from sklearn import preprocessing
import numpy as np
X = np.array(('A','C','B','A','C','D','A'))
de dimension
print(X.shape)
(7,)
que l'on peut redimensionner comme ceci
X = X.reshape(-1,1)
donne
print(X.shape)
(7, 1)
Encoder les éléments de la matrice X avec la fonction OrdinalEncoder
Pour encoder les éléments de la matrice X une solution est d'utiliser la fonction OrdinalEncoder:
enc = preprocessing.OrdinalEncoder(categories='auto')
enc.fit(X)
print( enc.transform(X) )
donne
[[0.]
[2.]
[1.]
[0.]
[2.]
[3.]
[0.]]
Encoder les éléments de la matrice X avec la fonction OneHotEncoder
Autre solution pour encoder les éléments de la matrice X: la fonction OneHotEncoder
enc = preprocessing.OneHotEncoder(categories='auto')
enc.fit(X)
print( enc.transform(X) )
donne
(0, 0) 1.0
(1, 2) 1.0
(2, 1) 1.0
(3, 0) 1.0
(4, 2) 1.0
(5, 3) 1.0
(6, 0) 1.0
Pour obtenir une matrice on peut alors utiliser toarray() :
print( enc.transform(X).toarray() )
qui donne ici
[[1. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]
[1. 0. 0. 0.]]