scikit-learn中多类问题的级联分类器

假设我有一个多类且具有层次结构的分类问题,例如’可食用’、’有营养’和’无营养’ – 可以这样表示

├── 可食用│   ├── 有营养│   └── 无营养└── 不可食用

虽然使用支持多类分类的分类器或对于不支持的分类器使用一对一/一对所有方案可以获得不错的性能,但单独训练每一级的分类器并将它们连接起来,以便将分类为’可食用’的实例进一步分类为有营养或无营养,可能会更有益。

我想使用scikit-learn的估计器作为构建块,我想知道我是否可以让Pipeline支持这种方法,或者我是否需要编写自己的估计器来实现基础估计器,并可能实现BaseEnsemble来实现这一点。

@某人之前在邮件列表中提到过这个问题 http://sourceforge.net/mailarchive/message.php?msg_id=31417048,我想知道是否有人对此有见解或建议如何进行操作。


回答:

您可以通过提供一个base_estimator作为构造函数参数和一个按顺序排列的目标类列表来级联,来编写自己的类作为元估计器。在这个元分类器的fit方法中,您可以根据这些类对数据进行子切片,并为每一级拟合base_estimators的克隆,并将结果子分类器存储在元分类器的属性中。

在predict方法中,您再次遍历级联结构,这次调用底层子分类器的predict方法来切片您的预测,并递归地将这些预测传递到下一级。您将需要使用大量的numpy高级索引 😉

您可以git grep base_estimator在源代码中查找代码库中现有的元估计器示例(如Bagging、AdaBoost、GridSearchCV…)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注