Добро пожаловать, читатели. Если вы попали прямо сюда, я настоятельно рекомендую вам вернуться и прочитать сначала по этой ссылке.
Введение в проблему: - В этом блоге я хотел бы помочь вам, ребята, создать модель машинного обучения на основе алгоритма дерева решений. Здесь мы будем работать с меньшим набором данных (взято из архива). Сначала мы будем обучать нашу модель, используя предоставленные данные, а затем будем выполнять мультиклассовую классификацию, используя построенную модель.
Давайте начнем с изучения набора данных. Обратите внимание, что есть 4 независимые переменные и 1 зависимая переменная. Простое наблюдение за данными ничего не говорит о домене как таковом.
Далее давайте посмотрим на уникальные значения нашей зависимой переменной. Эта функция — это то, что мы будем прогнозировать в будущем, основываясь на других 4 входных переменных. Из приведенной ниже демонстрации есть 3 возможных значения для зависимой переменной, то есть ‹B, L, R›, и в данном наборе данных имеется ‹49, 288, 288› записей, имеющих эти значения соответственно.
Затем мы разбиваем наш набор данных на обучающий набор и тестовый набор. Здесь мы разделяем по правилу 70–30. Таким образом, из 625 заданных записей у нас осталось 437 записей, которые мы будем использовать в учебных целях.
Введение в DecisionTreeClassifier: это функция классификатора для DecisionTree. Это основная функция для реализации алгоритмов. Некоторые важные параметры этой функции:
- критерий. Он определяет функцию для измерения качества разделения. Sklearn поддерживает критерии «джини» для индекса Джини и «энтропию» для получения информации. По умолчанию принимает значение «джини».
- разделитель: определяет стратегию выбора разделения на каждом узле. Поддерживает «лучшее» значение для выбора наилучшего разделения и «случайное» для выбора наилучшего случайного разделения. По умолчанию принимает «лучшее» значение.
- max_features: определяет номер. функций, которые следует учитывать при поиске наилучшего разделения. Мы можем вводить целое число, число с плавающей запятой, строку и значение None. Если введено целое число, оно будет считаться максимальным числом функций при каждом разделении. Если берется значение с плавающей запятой, то оно показывает процент функций при каждом разделении. Если выбрано «auto» или «sqrt», то max_features=sqrt(n_features). Если берется «log2», то max_features= log2(n_features). Если нет, то max_features=n_features. По умолчанию принимает значение «Нет».
- max_depth. Параметр max_depth обозначает максимальную глубину дерева. Он может принимать любое целочисленное значение или None. Если None, то узлы расширяются до тех пор, пока все листья не станут чистыми или пока все листья не будут содержать выборок меньше, чем min_samples_split. По умолчанию принимает значение «Нет».
- min_samples_split: указывает выше минимальное число. образцов требуется. для разделения внутреннего узла. Если берется целочисленное значение, тогда min_samples_split считается минимальным номером. Если с плавающей запятой, то показывает процент. По умолчанию принимает значение «2».
- min_samples_leaf: минимальное количество образцов, необходимое для конечного узла. Если берется целочисленное значение, тогда min_samples_leaf считается минимальным номером. Если с плавающей запятой, то показывает процент. По умолчанию принимает значение «1».
- max_leaf_nodes: определяет максимальное количество возможных конечных узлов. Если нет, то требуется неограниченное количество конечных узлов. По умолчанию принимает значение «Нет».
- min_impurity_split: определяет порог ранней остановки роста дерева. Узел разделится, если его примесь выше порога, в противном случае это лист.
Теперь приступим к построению нашей модели. Есть 2 типа критериев. Сначала мы будем использовать критерии по умолчанию, т. е. ‘gini’:-
Далее давайте приступим к построению нашей модели, используя такие критерии, как «энтропия»:
Далее давайте выполним прогнозирование (т. е. классификацию нескольких классов) с использованием построенных моделей. Для обеих вышеуказанных моделей мы будем выполнять задачу классификации. Теперь прогнозируемые результаты сохранены в фреймах данных y_pred_gini и y_pred_entrophy.
Во-первых, мы будем импортировать библиотеки метрик из пакета sklearn.
Далее давайте оценим производительность обеих моделей. Для этого мы будем сравнивать прогнозируемые результаты тестового набора данных с фактическими значениями тестового набора данных.
Обратите внимание, что, согласно приведенному выше отчету, точность модели с использованием Джини составляет около 73%, а точность модели с использованием энтропии составляет около 71%. Мы также можем видеть прогнозируемые значения обеих моделей:
Ниже показано, как выглядит дерево решений для нашей модели на основе Джини:
Ниже показано, как выглядит дерево решений для нашей модели на основе энтропии:
Ссылки: –