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