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

Среднеквадратическая ошибка:

Мы можем предсказать точность регрессионной модели дерева решений, используя среднеквадратичную ошибку (MSE). И, как следует из названия, MSE находит среднее значение всех квадратов ошибок. Его значение лежит в диапазоне от 0 до ∞. Чем ниже MSE, тем ближе прогноз к фактическому.

Выполнение:

Мы построим пример регрессионной модели дерева решений для лучшего понимания.

Импортируйте все необходимые модули

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeRegressor

Прочитать CSV-файл

df=pd.read_csv('decision-tree-regression-dataset.csv')
df

Вы можете скачать csv здесь

Выберите входные и выходные столбцы

x=df.iloc[:,0:1].values # all rows, only 0 column
y=df.iloc[:,1].values

Здесь x — это вход, а y — это выход.

Подгонка регрессора дерева решений к набору данных

reg= DecisionTreeRegressor()
y_pred=DecisionTreeRegressor(random_state=0)
reg.fit(x,y)

Теперь предскажите вывод, задав некоторое случайное значение

y_predict=reg.predict([[4.3]])

Вы получаете прогнозируемое значение в качестве вывода

array([60.])

Мы можем получить значение MSE, чтобы проверить, насколько точна наша модель.

from sklearn.metrics import mean_squared_error
  
# Given value
Y_true = [60]
  
# Calculation of Mean Squared Error (MSE)
mean_squared_error(Y_true,y_predict)

Эта команда возвращает 0, что означает, что наша модель идеально подходит, хотя это не всегда происходит в реальных сценариях.

Теперь мы построим график, чтобы понять взаимосвязь между входными и выходными переменными.

plt.scatter(x,y,color='blue')
plt.plot(x,reg.predict(x),color='red')
plt.xlabel("Level")
plt.ylabel("Salary-LPA")
plt.title("Salary vs level")
plt.show()

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

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

Удачного кодирования!