Quelle est la différence entre les deux? Il semble que les deux créent de nouvelles colonnes, dont le nombre est égal au nombre de catégories uniques dans l'entité. Ensuite, ils attribuent 0 et 1 aux points de données en fonction de la catégorie dans laquelle ils se trouvent.
Un exemple simple qui code un tableau à l'aide de LabelEncoder, OneHotEncoder, LabelBinarizer est présenté ci-dessous.
Je vois que OneHotEncoder a d’abord besoin de données sous forme codée d’entier pour être converties en son codage respectif, ce qui n’est pas nécessaire en cas de LabelBinarizer.
from numpy import array
from numpy import argmax
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
# define example
data = ['cold', 'cold', 'warm', 'cold', 'hot', 'hot', 'warm', 'cold',
'warm', 'hot']
values = array(data)
print "Data: ", values
# integer encode
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(values)
print "Label Encoder:" ,integer_encoded
# onehot encode
onehot_encoder = OneHotEncoder(sparse=False)
integer_encoded = integer_encoded.reshape(len(integer_encoded), 1)
onehot_encoded = onehot_encoder.fit_transform(integer_encoded)
print "OneHot Encoder:", onehot_encoded
#Binary encode
lb = LabelBinarizer()
print "Label Binarizer:", lb.fit_transform(values)
Un autre bon lien qui explique le OneHotEncoder est: Expliquez onehotencoder en utilisant python
Il peut y avoir d'autres différences valables entre les deux que les experts peuvent probablement expliquer.
Une différence est que vous pouvez utiliser OneHotEncoder
pour les données multi-colonnes, mais pas pour LabelBinarizer
et LabelEncoder
.
from sklearn.preprocessing import LabelBinarizer, LabelEncoder, OneHotEncoder
X = [["US", "M"], ["UK", "M"], ["FR", "F"]]
OneHotEncoder().fit_transform(X).toarray()
# array([[0., 0., 1., 0., 1.],
# [0., 1., 0., 0., 1.],
# [1., 0., 0., 1., 0.]])
LabelBinarizer().fit_transform(X)
# ValueError: Multioutput target data is not supported with label binarization
LabelEncoder().fit_transform(X)
# ValueError: bad input shape (3, 2)