sklearn LabelEncoder 将多个值组合成一个标签
sklearn LabelEncoder to combine multiple values into a single label
我正在寻找 运行 对可能值很少的列进行分类,但我想将它们合并到更少的标签中。
例如,一个作业可能有多个结束状态:success
、fail
、error
、killed
。但我希望将工作分为一组最终状态(包括 error
和 killed
)和另一组(仅包括 success
和 fail
).
我无法在 sklearn 的 LabelEncoder 中找到这样做的方法,除了我自己手动更改目标列(通过将 1
分配给 success
或 fail
和 0
其他所有)我找不到办法。
编辑
例子。这就是我需要发生的事情:
>>> 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]])
我正在寻找 运行 对可能值很少的列进行分类,但我想将它们合并到更少的标签中。
例如,一个作业可能有多个结束状态:success
、fail
、error
、killed
。但我希望将工作分为一组最终状态(包括 error
和 killed
)和另一组(仅包括 success
和 fail
).
我无法在 sklearn 的 LabelEncoder 中找到这样做的方法,除了我自己手动更改目标列(通过将 1
分配给 success
或 fail
和 0
其他所有)我找不到办法。
编辑 例子。这就是我需要发生的事情:
>>> 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]])