Назад к вопросам
JuniorТеорияЧасто
Что выведет эта программа?
import numpy as np
def gini(y):
p = np.mean(y)
return 1 - p ** 2 - (1 - p) ** 2
print(gini(np.array([1, 1, 1, 1])), gini(np.array([0, 1, 1, 0])))0.0 0.5
- Ждать
1.0для чистой группы: Gini измеряет, насколько перемешаны классы, поэтому группа одного класса получает0.0, а не максимум. - Ждать
1.0для группы, где классов поровну: при двух классах Gini достигает максимума1 - 0.25 - 0.25 = 0.5и до1.0не доходит.
- Какое из двух разбиений предпочтёт дерево решений — с меньшим или с большим взвешенным Gini?
- Почему при оценке разбиения Gini двух групп-потомков взвешивают по их размерам?