python - Scikit-learn 的 LabelBinarizer 与 OneHotEncoder

标签 python encoding scikit-learn data-science categorical-data

两者有什么区别?似乎两者都创建了新列,它们的数量等于特征中唯一类别的数量。然后他们根据数据点所属的类别将 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)

enter image description here

另一个很好的解释 OneHotEncoder 的链接是:Explain onehotencoder using python

两者之间可能存在其他有效差异,专家可能可以解释。

关于python - Scikit-learn 的 LabelBinarizer 与 OneHotEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473381/

相关文章:

c - 如何将完整的 UTF-8 十六进制值读入 int

python - 使用 CV 获得较高的 RMSE 分数传达什么信息

python - 确定文本是否为英文?

MySQL:字段中的空白字符实际上不是空白。它是什么?

python - python写文件处理编码

python - 如何在 Pandas DataFrame 上编写条件数组操作

python - 使用 lxml 在 Python 中漂亮地格式化 xml 文件

python - 使用包几何自动隐藏 Tkinter Canvas 滚动条

python - 根据条件语句返回嵌套函数中的各种变量

python - Django 多个外键 - 在详细信息管理页面中显示相关字段以进行添加/编辑