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 preprocessingimport numpy as npX = 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.]]
