Рубрики
Без рубрики

Деревья решений в Python – пошаговая реализация

Привет! В этой статье мы будем сосредоточены на ключевых понятиях деревьев решений в Python. Итак, давайте начнем.

Автор оригинала: Pankaj Kumar.

Привет! В этой статье мы будем сосредоточены на ключевых понятиях деревьев решений в Python. Итак, давайте начнем.

Деревья решений самые простые и наиболее популярные Алгоритм обучения машине обучения для прогнозирования прогнозирования.

Алгоритм деревьев решений используется для регрессии, а также для задач классификации. Это очень легко читать и понимать.

Каковы деревья решений?

Деревья решений являются блок-схемы, подобными блок-схемами древовидных структур всех возможных решений для решения, основанного на определенных условиях. Это называется деревом принятия решений, так как он начинается с корня, а затем отделен в ряд решений, как дерево.

Дерево начинается с корневого узла, где находится самый важный атрибут. Филиалы представляют собой часть всего решения, и каждый узел листьев проводит результат решения.

Добавить заголовок

Измерение выбора атрибута

Лучший атрибут или функция выбрана с помощью Измерение выбора атрибута (ASM). Выбранный атрибут является функцией корневого узла.

Измерение выбора атрибутов – это методика, используемая для выбора наилучшего атрибута для дискриминации среди кортежей. Он дает ранг каждому атрибуту, а лучший атрибут выбран в виде критерия разделения.

Самые популярные методы отбора:

  1. Энтропия
  2. Информационная прибыль
  3. Соотношение усилия
  4. Индекс Джини

1. энтропия

Чтобы понять усиление информации, мы должны сначала знакомы с концепцией энтропии. Энтропия – это случайность в обработке информации.

Это измеряет чистоту раскола. Трудно сделать выводы из информации, когда энтропия увеличивается. Он колеблется от 0 до 1. 1 означает, что это полностью нечистое подмножество.

Энтропийский 1.

Здесь p (+)/p (-) =% Class of + VE/% от класса

Пример:

Если в нашем классе в нашем классе есть 100 экземпляров, в которых 30 являются положительными, а 70 являются отрицательными, то,

 P(+) = 3/10 and P(-) = 7/10
H(s)= -3/10 * log2 (3/10) - 7/10 * log2 ( 7/10)  ≈ 0.88

2. Получение информации

Усиление информации – это снижение энтропии. Деревья решений используют усиление информации и энтропии для определения того, какие функции разделены на узлы, чтобы приблизиться к прогнозированию цели, а также определить, когда прекратить расщепление.

Higheee

Здесь S – это набор экземпляров, а является атрибутом и S V это подмножество с.

Пример:

1 2 3 4 5 6 7 8 9 10 1

Для общих данных Да Значение присутствует 5 раз и Нет Значение присутствует 5 раз Отказ Так,

H(s) = -[ ( 5/10)  * log2 (5/10) +  (5/10) * log2 (5/10) ] = 1

Давайте проанализируем Истинные значения сейчас. Да присутствует 4 раза и Нет присутствует 2 раза.

H(s) = -[ ( 4/6) * log2 ( 4/6) + (2/6) * log2 (2/6) ] = 0.917

Для Ложные значения ,

H(s)= - [ ( 3/4) * log2 (3/4) + (1/4) * log2 (1/4) ] = 0.811
Net Entropy = (6/10) * 0.917 + (4/10) * 0.811 = 0.874
Total Reduction = 1- 0.874 = 0.126  

Это значение (0.126) называется усилением информации.

3. Соотношение усиления

Коэффициент усиления – это модификация получения информации. Он учитывает номер и размер ветвей при выборе атрибута. Это занимает во внимание внутреннюю информацию.

GR(S,A) = Gain( S,A)/ IntI(S,A)

4. Индекс Джини

Индекс GINI – это также тип критерия, который помогает нам рассчитать усиление информации. Он измеряет примесь узла и рассчитывается только для двоичных значений.

Джини Имбу

Пример:

C1,

P(C1) = 0/6 = 0
P(C2) = 6/6 = 1
Giniiiiiiii.

Примесь Джини более вычислительно эффективно, чем энтропия.

Алгоритмы дерева решений в Python

Давайте посмотрим на некоторые из деревьев решений в Python.

1. Итеративный дихотомизер 3 (ID3)

Этот алгоритм используется для выбора расщепления путем расчета получения информации. Усиление информации для каждого уровня дерева рассчитывается рекурсивно.

2. C4.5.

Этот алгоритм является модификацией алгоритма ID3. Он использует соотношение усиления информации или получателя для выбора наилучшего атрибута. Он может обрабатывать как непрерывные, так и отсутствующие значения атрибута.

3. Корзина (классификация и регрессия)

Этот алгоритм может производить классификацию, а также регрессию. В классификации дерева целевая переменная исправлена. В регрессионном дереве значение целевой переменной должно быть предсказано.

Классификация дерева решений с использованием Scikit-Learn

Мы будем использовать библиотеку Scikit-Learn, чтобы построить модель и использовать набор данных IRIS, который уже присутствует в библиотеке Scikit-Learn или мы можем скачать его из здесь.

DataSet содержит три классы – Iris Setosa, Iris Versicolour, Iris Virginica со следующими атрибутами

  • длина сепына
  • Sepal ширина
  • лепестка длина
  • Ширина лепесток

Мы должны предсказать класс завода IRIS на основе его атрибутов.

1. Во-первых, импортируйте необходимые библиотеки

import pandas as pd 
import numpy as np
from sklearn.datasets import load_iris
from sklearn import tree

2. Теперь загрузите набор данных IRIS

iris=load_iris()

Чтобы увидеть все функции в наборе данных, используйте функцию печати

print(iris.feature_names) 

Выход:

['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

Чтобы увидеть все целевые имена в наборе данных

print(iris.target_names) 

Выход:

['setosa' 'versicolor' 'virginica']

3. Удалите этикетки

Теперь мы удалим элементы в 0, 50 и 100-й позиции. 0-й элемент относится к виду Setosa, 50-е место принадлежит версии Versicolor, а 100-я принадлежит виду Виргилики.

Это удалит этикетки для нас для лучшего обучения нашего классификатора дерева решений и проверить, сможет ли он хорошо классифицировать данные хорошо.

#Spilitting the dataset
removed =[0,50,100]
new_target = np.delete(iris.target,removed)
new_data = np.delete(iris.data,removed, axis=0) 

4. Обучить классификатор дерева решений

Последний шаг – использовать классификатор дерева решений от Scikit-Nearn для классификации.

#train classifier
clf = tree.DecisionTreeClassifier() # defining decision tree classifier
clf=clf.fit(new_data,new_target) # train data on new data and new target
prediction = clf.predict(iris.data[removed]) #  assign removed data as input

Теперь мы проверяем, соответствуют ли ваши предсказанные этикетки оригинальные этикетки

print("Original Labels",iris.target[removed])
print("Labels Predicted",prediction)

Выход:

Original Labels [0 1 2]
Labels Predicted [0 1 2]

Ух ты! Точность нашей модели на 100%. Построить дерево решений

tree.plot_tree(clf) 
Плащ
SPHX GLR сюжет Iris DTC 002

Заключение

В этом руководстве мы узнали о некоторых важных концепциях, таких как выбор наилучшего атрибута, увеличения информации, энтропии, соотношения усиления и индекс GINI для деревьев решений. Мы поняли различные типы алгоритмов дерева решений и внедрение классификатора дерева решений с использованием Scikit-Suart. Надеюсь, вам все понравилось!

Рекомендации

Официальное дерево решений

Обучение дерева решений