在 scikit-learn 中将多类分类目标减少为二元分类目标

数据挖掘 分类 scikit-学习 多类分类 二进制
2021-09-25 21:06:51

我想将多类分类目标减少为二元分类目标。理想情况下,这种映射将发生在 scikit-learn 中,因此在训练和预测期间都适用相同的转换。

我查看了转换预测目标 (y)文档,但没有看到可行的方法。理想情况下,它将是TransformedTargetRegressor的分类器版本。

像这样的映射:

targets_multi  = {'A', 'B', 'C', 'D'}
targets_binary = {0: {'A', 'B'},
                  1: {'C', 'D'}}
1个回答

在管道的三个既定目的中,你会得到“方便和封装”一个,而不是其他目的:

  • 联合参数选择:您没有任何用于此转换的参数。
  • 安全性(来自数据泄漏):您的转换是特定于上下文的,因此在将其应用到整个数据集之前没有数据泄漏。

这感觉就像是目标的定义,最好将其视为数据检索的一部分。


scikit-learn 期望transform方法有输入 justX和 not yfit_transform在大多数情况下,您可以通过覆盖from来解决这个问题TransformerMixin但是,下游不会期望得到两个返回值(转换后X的 和y),所以这行不通。

您可以使用该包取得更多进展imbalanced-learn,它提供了自己Pipeline的更灵活的转换语法。目的是实现重采样器,这引发了一个主要问题:重采样器不适用于预测时间。