2つの違いは何ですか?どちらも新しい列を作成するようです。その列の数は、フィーチャ内の一意のカテゴリの数に等しくなります。次に、彼らは彼らがいるカテゴリに応じてデータポイントに0と1を割り当てます。
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)
OneHotEncoderを説明するもう1つの良いリンクは次のとおりです。 pythonを使用したonehotencoderの説明
おそらく専門家が説明できる2つの間に他の有効な違いがあるかもしれません。
違いは、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)