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

Active 11 août 2020    /    Viewed 4543    /    Comments 0    /    Edit


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


Card image cap
profile-image
Daidalos

Hi, I am Ben.

I have developed this web site from scratch with Django to share with everyone my notes. If you have any ideas or suggestions to improve the site, let me know ! (you can contact me using the form in the welcome page). Thanks!