假设我有一个分类问题,它是多类的,具有典型的层次结构,例如“可食用”、“营养”和“营养”,所以可以这样表示
├── edible
│ ├── nutritious
│ └── ~nutritious
└── ~edible
虽然使用支持多类分类的分类器或对不支持多类分类的分类器使用one-vs-one/all方案可以获得合理的性能,但是在每个级别分别训练分类器并将其串联起来,这样分类为“可食”的实例可以被分类为nutritious
或不分类。在
我想使用scikit-lean
估计器作为构建块,我想知道我是否可以使Pipeline
支持这一点,或者我是否需要编写自己的实现基本估计器的估计器,并且可能是BaseEnsemble
来实现这一点。在
@ogrisel以前在邮件列表http://sourceforge.net/mailarchive/message.php?msg_id=31417048上提到过这个问题,我想知道是否有人对此有什么见解或建议。在
您可以通过提供作为构造函数参数的
base_estimator
和要级联的目标类的列表顺序列表来编写自己的类作为元估计器。在这个元分类器的fit方法中,您基于这些类对这些数据进行子划分,并为每个级别拟合base_estimators
的克隆,并将生成的子分类器存储在元分类器的属性中。在在predict方法中,您在级联结构上再次迭代,这次调用底层子分类器上的predict,将预测切片并递归地传递到下一级。你将需要一个公平的numpy花式索引;)
您可以在源代码中
git grep base_estimator
在代码库中找到现有的元估计器示例(如Bagging、AdaBoost、GridSearchCV…)。在相关问题 更多 >
编程相关推荐