sklearn LabelEncoder 将多个值组合成一个标签

sklearn LabelEncoder to combine multiple values into a single label

我正在寻找 运行 对可能值很少的列进行分类,但我想将它们合并到更少的标签中。

例如,一个作业可能有多个结束状态:successfailerrorkilled。但我希望将工作分为一组最终状态(包括 errorkilled)和另一组(仅包括 successfail ).

我无法在 sklearn 的 LabelEncoder 中找到这样做的方法,除了我自己手动更改目标列(通过将 1 分配给 successfail0 其他所有)我找不到办法。

编辑 例子。这就是我需要发生的事情:

>>> label_binarize(['success','fail','error','killed', 'success'], classes=(['success', 'fail']))
array([[1],
       [1],
       [0],
       [0],
       [1]])

不幸的是,label_binarize(或 LabelBinarizer,就此而言)分别为每一列执行此操作。这不是我想要的:

>>> label_binarize(['success','fail','error','killed', 'success'], classes=['success', 'fail'])
array([[1, 0],
       [0, 1],
       [0, 0],
       [0, 0],
       [1, 0]])

关于如何做到这一点有什么想法吗?

也许你应该看看 label_binarize。您可以将 success 设置为唯一的 class,从而将其余部分默认为 0。与在编码之前更改数据的结果相同,但可能更适合您的管道。

from sklearn.preprocessing import label_binarize
label_binarize(['success','fail','error','killed', 'success'], classes=['success'])

输出

array([[1],
       [0],
       [0],
       [0],
       [1]])