Я принимаю классификатор дерева решений в scikit-learn, чтобы рекомендовать пациентам один из наборов медицинского лечения на основе клинических данных. Одно лечение, называемое no_epi, противопоказано любому пациенту, у которого когда-либо была эпилепсия из-за риска получения травмы, поэтому такое лечение никогда не может быть предложено пациенту с эпилепсией, даже если такой пациент в противном случае был бы рекомендован им.

Я беспокоюсь о том, что полагаться на обучающий набор будет недостаточно, чтобы гарантировать, что сценарий эпилепсия = True и решение = no_epi никогда не может произойти, и поэтому я подозреваю, что необходимо будет жестко закодировать это в дереве после обучения. Мое первое предположение - сделать это жесткое кодирование с помощью своего рода «обратного отсечения», в котором я бы начал с самых глубоких листьев no_epi и заменил их поддеревом, как показано ниже. эскиз .

У меня вопрос двоякий:

  1. Кто-нибудь знает о лучшем способе сделать это, чем метод обратной обрезки, который я набросал?
  2. Как я мог практически реализовать эту обратную обрезку в scikit-learn после обучения дерева на функциях, отличных от эпилепсии? Я думал о ручном изменении атрибутов children_left и children_right класса Tree, но получаю исключение { { Х3 } }

Большое спасибо за помощь и счастливых праздников всем, кто празднует!

0
Philip Egger