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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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