Задание 1. Расчёт индекса Джини

В узле дерева решений находятся 10 объектов:

Необходимо:

  1. Вычислить долю каждого класса.
  2. Рассчитать индекс Джини по формуле G = 1 − Σpₖ².
  3. Реализовать расчёт на Python.
  4. Сравнить результат с индексом Джини для узла, содержащего 5 объектов каждого класса.
  5. Определить, какой узел более однородный.

Начальные данные:

import numpy as np

 

y1 = np.array([0, 0, 0, 0, 0, 0, 0, 1, 1, 1])

y2 = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])

Задание 2. Построение дерева решений

Дан набор данных:

import numpy as np

 

X = np.array([

    [2], [3], [4], [5],

    [6], [7], [8], [9]

])

 

y = np.array([0, 0, 0, 0, 1, 1, 1, 1])

Необходимо:

  1. Создать модель DecisionTreeClassifier с критерием gini.
  2. Установить max_depth=2.
  3. Обучить модель.
  4. Определить класс объектов со значениями признака 3.5 и 7.5.
  5. Вывести текстовые правила дерева.
  6. Объяснить, как дерево использует условия разбиения.

Задание 3. Ограничение сложности дерева

Используя набор данных make_classification, необходимо:

  1. Сгенерировать 200 наблюдений с 5 признаками.
  2. Разделить данные на обучающую и тестовую выборки.
  3. Обучить деревья с max_depth=2, max_depth=5 и без ограничения глубины.
  4. Для каждой модели вычислить точность на обучающей и тестовой выборках.
  5. Повторить эксперимент с min_samples_leaf=5.
  6. Объяснить, как ограничения глубины и минимального количества объектов в листе помогают избежать подгонки к шуму.