两者有什么区别?似乎两者都创建了新列,其数量等于要素中唯一类别的数量。然后,根据它们所在的类别将0和1分配给数据点。
最佳答案
下面显示了一个简单的示例,该示例使用LabelEncoder,OneHotEncoder,LabelBinarizer编码数组。
我看到OneHotEncoder首先需要整数编码形式的数据才能将其转换为LabelBinarizer不需要的相应编码。
from numpy import array
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelBinarizer
# 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的好的链接是:Explain onehotencoder using python
两者之间可能还有其他有效的区别,专家可能会解释。