просто не ясно как разбиваются узлы в случае class_weight=balanced
Есть у нас корневой узел, в нем 5 наблюдений, 2 хороших и 3 плохих, вероятности классов 0,4 и 0,6. Разбили, получили два узла, в одном - 3 наблюдения, 2 хороших и 1 плохой, вероятности 0,67 и 0,33, в другом – 2 наблюдения, 0 хороших и 2 плохих, вероятности 0 и 1.
Сделали balanced и прочитали
The “balanced” mode uses the values of y to automatically adjust weights inversely proportional to class frequencies in the input data as n_samples / (n_classes * np.bincount(y))
Для нашего примера веса будут
5 / (2 * np.bincount(y))
array([1.25 , 0.83333333])
Тогда в корневом узле относительные частоты станут 0,5 и 0,5, мы ж баланс хотим. Разбили, опять получили два узла, в одном - 3 наблюдения, 2 хороших и 1 плохой станут 1,25 * 2 = 2,5 и 0,83 * 1 = 0,83, в другом – 2 наблюдения, 0 хороших и 2 плохих станут 1,25 * 0 и 0,83 * 2 = 1,667. У нас – статистика, полтора землекопа вполне возможны. Ну и получаем вероятности, в одном 2,5 / (2,5 + 0,83) = 0,75 и 0,83 / (2,5 + 0,83) = 0,25, в другом 0 / (0 + 1,667) = 0 и 1,667 / (0 + 1,667) = 1. В тетрадке, которая в личке, это строки 5-7