两者有什么区别?似乎两者都创建了新列,它们的数量等于特征中唯一类别的数量。然后他们根据数据点所属的类别将 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
两者之间可能存在其他有效差异,专家可能可以解释。
关于python - Scikit-learn 的 LabelBinarizer 与 OneHotEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473381/