Как получить информацию о выигрыше от scikit-learn DecisionTreeClassifier?

Я вижу, что DecisionTreeClassifier принимает критерий = 'энтропия', что означает, что он должен использовать коэффициент усиления информации в качестве критерия для разделения дерева решений. Мне нужна информация для каждой функции на корневом уровне, когда она собирается разбить корень node.

Ответ 1

Вы можете получить доступ к информации (или примеси gini) для функции, которая использовалась как разделение node. Атрибут DecisionTreeClassifier.tree_.best_error[i] содержит энтропию i-го node расщепления по функции DecisionTreeClassifier.tree_.feature[i]. Если вы хотите, чтобы энтропия всех примеров достигла i-го node, просмотрите DecisionTreeClassifier.tree_.init_error[i].

Для получения дополнительной информации см. документацию здесь: https://github.com/scikit-learn/scikit-learn/blob/dacfd8bd5d943cb899ed8cd423aaf11b4f27c186/sklearn/tree/_tree.pyx#L64

Если вы хотите получить доступ к энтропии для каждой функции (при определенном расколе node) - вам нужно изменить функцию find_best_split https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_tree.pyx#L713