【问题标题】:Cascade Classifiers for Multiclass Problems in scikit-learnscikit-learn 中多类问题的级联分类器
【发布时间】:2014-02-04 17:51:12
【问题描述】:

假设我有一个分类问题,它是多类且具有层次特征的,例如'edible'、'nutritious' 和 '~nutritious' - 所以可以这样表示

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

虽然使用支持多类分类的分类器或对不支持多类分类的分类器使用一对一/所有方案可以获得合理的性能,但在每个级别单独训练分类器并将它们连接起来以便实例归类为“可食用”可以归类为nutritious 或不归类。

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

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

【问题讨论】:

  • 你最后做了什么?

标签: python machine-learning data-mining scikit-learn


【解决方案1】:

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

在 predict 方法中,您再次遍历级联结构,这一次在底层子分类器上调用 predict 来分割您的预测并递归地将它们传递到下一个级别。您将需要大量的 numpy 花式索引;)

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

【讨论】:

  • 顶一下这个旧帖子,看看是否有人有关于如何做到这一点的好教程。
猜你喜欢
  • 2019-01-02
  • 2020-08-14
  • 2016-10-17
  • 1970-01-01
  • 2015-05-09
  • 2012-11-11
  • 2017-12-21
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多