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

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

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

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

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

我想使用 scikit-lean 估算器作为构建 block ,我想知道我是否可以让 Pipeline 支持它,或者我是否需要自己编写实现基本估计器的估计器和可能的 BaseEnsemble 来执行此操作。

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

最佳答案

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

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

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

关于python - scikit-learn 中多类问题的级联分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151346/

相关文章:

python - 如何修复("ValueError: You are trying to load a weight file containing 16 layers into a model with 0 layers")

python - "Setting an array element with a sequence"numpy 错误

machine-learning - 为什么关联规则学习被认为是一种监督学习方法?

python - 对于 AI 和数据挖掘的东西,我应该学习哪一组 python 库

python - TFIDF 计算困惑

python - 如何在 pymongo (python mongodb) 中执行 get_or_create?

python - 从图表中提取绘图线

python - 在 Tensorflow 2.X 中测量 TFLite 模型的触发器

python - 当我的用户使用 gae-simpleauth 登录时,如何从 Google 帐户检索电子邮件地址并将其存储在我的应用程序的用户个人资料中?

python - 如何打印 "object at somthing"的值