【发布时间】: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