Я пытался создать модель дерева решений с помощью модуля scikit-learn: tree. После того, как я сгенерировал модель, я визуализировал дерево и критерии, на основании которых были приняты решения. Тем не менее, я хочу изменить пороговые значения в некоторых критериях вручную, чтобы увидеть, как выходные данные изменяются для них. Есть ли способ сделать это? Или какая-нибудь библиотека, которая преобразует дерево решений в набор операторов if-else, как только узнает требуемые пороги из набора данных и наоборот?

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

Спасибо!

2
Umang Agarwal 20 Дек 2019 в 21:17

1 ответ

Да, вы можете легко это сделать.

Дерево решений sklearn предоставляет свое базовое дерево через атрибут tree_. Этот tree_, кроме всего прочего, имеет атрибут threshold, который представляет собой массив значений, содержащий пороговые значения всех узлов. Вы можете изменить этот массив, тем самым изменяя пороги.

Например:

X,y = load_breast_cancer(return_X_y=True)
dt = DecisionTreeClassifier(max_depth=3).fit(X,y)
print(dt.tree_.threshold)     #All the thresholds, size equals "dt.tree_.node_count"
dt.tree_.threshold[3] = 10.0  #Manually modifying a threshold    

Чтобы проверить: если вы сравниваете точность в отдельном наборе тестов до и после этой модификации (при условии, что вы изменили неконечный узел), вы должны заметить изменение (которое, вероятно, будет хуже).

1
Shihab Shahriar Khan 21 Дек 2019 в 15:49