【问题标题】:Python Scikit Decision Tree with variable number of outputs具有可变数量输出的 Python Scikit 决策树
【发布时间】:2015-07-31 22:01:03
【问题描述】:

我希望使用 Python SciKit 库设置 multi-output decision tree。然而,我面临的问题是它不是一个简单的“n_outputs”分类。有些样本会有 3 个输出,有些是 4,有些是 5。我不确定将其传达给库的最佳方法是什么。

我正在考虑使用最大数量的输出并使用“无输出”分类。因此,如果我训练一个集合,其中每个样本都被强制转换为 5 个输出,那么任何最初只有 3 个分类的样本都将通过添加“无输出”分类更改为 5。

你觉得这样行吗?还有其他方法可以制作具有可变数量输出的多输出决策树吗?

【问题讨论】:

  • 输出数量本身是预测任务的一部分吗?也就是说,给定一些输入数据,模型是否应该使用其训练来预测需要多少输出?或者输出的数量是否可以从输入中以一种确定的方式推导出来?作为人类,您如何知道给定输入将有多少输出?
  • 不,不是。我有一组样本,我试图将它们分类。一些样本属于 3、4 或 5 个类别。
  • 如果我理解正确,您不仅要获得分类结果,即您的测试样本登陆的叶节点中训练样本中最常出现的类别,而且还希望获得所有类别该节点的其他训练样本。如果你想要这个,你可能不得不破解 sklearn.tree 的 predict 方法,才能返回给你。这种 hack 的一个很好的起点是 sklearn 的 github 项目。代码比较容易打通。
  • 好的,我来看看。谢谢!
  • 另一种看待它的方式是,您可能想要做多个分类器,每个分类器都是单个类别的二进制预测器。也就是说,不要尝试预测数据点的类别集,而是尝试预测“该项目是否属于 A 类是/否”、“它是否属于 B 类是/否”等。如果可以相互识别专有类别集,您可以使用这些而不是对每个类别进行二元预测。

标签: python scikit-learn decision-tree


【解决方案1】:

听起来您正在尝试进行多标签分类,而不是多输出分类。多标签可以通过提供一个指示向量来最容易地完成,该向量表示每个样本和每个类是否在类中,所以你得到一个二进制数组(0 表示不在类中,1 表示在类中)大小(n_samples, n_classes)。

查看multi-label documentation,看看它是否适合您的用例。

【讨论】:

    猜你喜欢
    • 2021-08-19
    • 2020-03-23
    • 2017-01-27
    • 1970-01-01
    • 2019-03-25
    • 2015-06-23
    • 2018-12-01
    • 2017-05-03
    • 2020-09-08
    相关资源
    最近更新 更多