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

8

假设我有一个多类别、层级化的分类问题,例如“可食用”、“营养丰富”和“不营养丰富”,可以表示为:

├── edible
│   ├── nutritious
│   └── ~nutritious
└── ~edible

虽然支持多类分类的分类器或使用一对一/全方案的分类器可以获得合理的性能,但单独训练每个级别的分类器并将它们连接起来,以便将被分类为“可食用”的实例分类为营养的或不是可能也会有益处。
我想使用scikit-lean估计器作为构建块,我想知道是否可以使Pipeline支持此功能,或者是否需要编写自己的估计器来实现基本估计器和可能的BaseEnsemble
@ogrisel曾在邮件列表中提到过这一点http://sourceforge.net/mailarchive/message.php?msg_id=31417048,我想知道是否有人对如何做出这样的尝试有见解或建议。

1
你最终做了什么? - Afflatus
1个回答

7

你可以编写自己的元估计器作为构造函数参数提供一个base_estimator和有序的目标类级联列表。在该元分类器的fit方法中,您根据这些类别对数据进行分片,并针对每个级别拟合base_estimators的克隆版本,并将生成的子分类器存储在元分类器的属性中。

在predict方法中,您再次迭代级联结构,并调用底层子分类器的predict方法来切片预测并递归传递到下一级。您将需要相当多的numpy花式索引技巧;)

您可以在源代码中使用git grep base_estimator找到现有元估计器示例(如Bagging、AdaBoost、GridSearchCV等)。


顶一下这篇旧帖,看看是否有关于如何做到这一点的好教程。 - ADF

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接