【问题标题】:Decision tree that can provide two predictions as output?可以提供两个预测作为输出的决策树?
【发布时间】:2020-02-18 16:52:28
【问题描述】:

背景故事:我目前正在研究一个多标签(153 个标签)分类问题,我被要求(似乎是)一个非常独特的输出功能。我的客户想要一个新观察的预测值(相当标准),以及一个“第二次猜测”作为备用措施。我以前从未听说过这个,也没有找到任何关于通过 SO 或谷歌生成这样一个指标的信息。

如果我的模型对预测的置信度低于某个百分比,则将对预测进行人工检查以确保准确性,我的客户希望手头有两个预测,以便他们可以快速查看这些规范并查看它们是否匹配希望减少手动验证所需的时间。

请求:遗憾的是,到目前为止,我没有任何我尝试过的代码,因为我什至不知道从哪里开始。我觉得会发生某种“如果 x 不是 x,那么”循环动作,但我只是不知道。

所需的输出:只是我所需的输出文件的示例,如下所示:

Actual label | Predicted Label | confidence | second guess | confidence
      1               1             .85             2           .09
      2               2             .51             2           .34
      3               27            .22             3           .21

格式化输出是我可以自己处理的,但最后两列是我目前无法生成的。如果有人可以仅向我指出一些文档的方向或正在执行此操作的示例,我愿意进行研究并将其应用到我自己的特定用例中。

谢谢:)

【问题讨论】:

  • @ChrisA 感谢您提供此解决方案。输出值是整数值,而我原以为它们是十进制的。如果我的第一次测试观察的预测是“53”和“126”,这是否意味着预测一的置信度为 53%,预测二的置信度为 12.6%?

标签: python scikit-learn classification prediction decision-tree


【解决方案1】:

您所描述的内容看起来很像 TOP-N 度量,根据模型,如果在 N 个更可能的输出中存在基本事实,则该度量会测量准确性并说明正确的输出。我相信您正在寻找的是https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.predict_proba,它返回您的测试集中属于每个类的每个样本的概率,您所要做的就是排序并取前 N 个,在您的情况下为前 2

【讨论】:

  • 类似np.argsort(clf.predict_proba(X), axis=1)[:, -2:]
  • 谢谢@Pablo Arnau González。我将需要对此进行审查并尝试了解我如何提取 N 个预测,但我确信我能弄清楚。我会深入研究并报告
  • @ChrisA 感谢您提供此解决方案。输出值是整数值,而我原以为它们是十进制的。如果我的第一次测试观察的预测是“53”和“126”,这是否意味着预测一的置信度为 53%,预测二的置信度为 12.6%?
  • 输出值是您预测标签的索引,使用这些索引您的类
  • @ChrisA 哦,所以第一列 (53) 中的输出是 X_test 中该特定标签第一次出现的索引,还是该特定标签的随机索引?那么,如果我转到 X_test 的第 53 行并检查我的目标变量列,我会找到“第一个预测的”标签吗?第二列是“下一个最佳猜测”的索引,是吗?
猜你喜欢
  • 2013-12-21
  • 2016-07-12
  • 2017-04-11
  • 1970-01-01
  • 2020-08-11
  • 2018-06-29
  • 2013-07-11
  • 2020-07-14
  • 1970-01-01
相关资源
最近更新 更多