LabelBinarizer Scikit-Learn против OneHotEncoder - PullRequest
0 голосов
/ 22 мая 2018

В чем разница между двумя?Кажется, что оба создают новые столбцы, число которых равно количеству уникальных категорий в функции.Затем они присваивают 0 и 1 точкам данных в зависимости от того, к какой категории они относятся.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Разница в том, что вы можете использовать OneHotEncoder для данных с несколькими столбцами, а не для LabelBinarizer и 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)
0 голосов
/ 24 мая 2018

Простой пример, который кодирует массив с использованием LabelEncoder, OneHotEncoder, LabelBinarizer, показан ниже.

Я вижу, что OneHotEncoder сначала нуждается в данных в целочисленной кодированной форме для преобразования в соответствующую кодировку, которая не требуется в случае 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)

enter image description here

Еще одна полезная ссылка, которая объясняет OneHotEncoder: Объяснить onehotencoder с использованием python

Между этими двумя факторами могут существовать и другие существенные различия, которые эксперты могут объяснить.

...