首页 > 解决方案 > 如何修改决策树分类器以排除不可接受的(特征、决策)对?

问题描述

我正在 scikit-learn 中制作一个决策树分类器,以根据临床输入向患者推荐一组医疗方法中的一种。一种称为 no_epi 的治疗对任何因受伤风险而患有癫痫症的患者都是禁忌的,因此不能向癫痫患者建议这些治疗,即使这样的患者会被推荐。

我担心依靠训练集不足以保证场景 epilepsy=True 和 decision=no_epi 永远不会发生,因此我怀疑有必要在训练后将其硬编码到树中。我的第一个猜测是通过一种“反向修剪”来进行硬编码,在这种情况下,我将从最深的 no_epi 叶子开始,然后用一个子树替换它们,如下面的 草图所示。

我的问题有两个:

  1. 有没有人知道比我草拟的反向修剪方法更好的方法?
  2. 在对除癫痫以外的特征进行树训练之后,如何在 scikit-learn 中实际实现这种反向修剪?我想过手动修改类的属性和children_left属性,但我得到了异常 children_rightTreeAttributeError: attribute 'children_left' of 'sklearn.tree._tree.Tree' objects is not writable

非常感谢您的帮助,祝所有庆祝节日快乐!

标签: pythonscikit-learndecision-tree

解决方案


推荐阅读