Comment transformer (encoder) une variable qualitative en variable quantitative avec scikit learn en python ?

Published: 11 août 2020

Tags: Python; sklearn; Machine Learning;

DMCA.com Protection Status

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.]]

Références