机器学习:Python实现决策树回归

机器学习:Python实现决策树回归

CART代表分类和回归树:

机器学习:Python实现决策树回归

回归比分类化更复杂,需要更多关注,因此我将尝试以简单的方式打破这个复杂的主题。

这里我们有一个散点图表示这里的数据我们有两个自变量,我们预测的是第三个变量Y,你不能在这个模型中看到它因为它是一个二维图,但是想象Y是第三维从屏幕中伸出来。

机器学习:Python实现决策树回归

因此,如果我们添加第三个维度,它将在右上角窗口中看起来像,但我们不需要看Y,因为我们首先需要使用此散点图并查看决策树是如何创建的。所以一旦我们运行了回归意义上的决策树算法会发生的是你的散集图会被分割成段。让我们看看这个算法是如何做到的:

机器学习:Python实现决策树回归

现在,如何以及在哪里进行这些Splits是由算法决定的,算法在执行Split 时使用数学熵。这种Split 通过添加一些值来增加散乱点上的信息量,并且最终当它不能再向我们的设置添加信息时停止,并且将这些segments Split 成叶子。例如,当我们在本地叶上的总点数小于5%的时候,那部分就不会被创造了,所以最重要的是分裂的发生在哪里。为了更深入地理解分裂是如何决定的,你需要深入了解数学熵。

现在已经足够知道算法将处理这个问题,并找到将调用终端叶子的最佳叶子数。

因此,让我们再次回放所有这些并创建Splits。我们可以看到第一个拆分Split 1发生在20,所以这里我们基本上有两个选项。然后Split 2发生在170,这意味着满足条件x1 <20。我们将继续创建Split 3在200和Split 4在40:

机器学习:Python实现决策树回归

因此,当绘制我们的决策树时,我们填充boxs,我们考虑我们的因变量,并检查添加到我们的数据集中的新的obervation路径。所以我们假设我们添加一个观察点x1 = 30和x2 = 50,它会落在终端叶子1和3之间,这些信息有助于我们预测Y的值。这种方法非常直接:我们只取平均值对于每个终端叶子,我们计算所有这些点的平均值,并将该值分配给整个终端叶子。

机器学习:Python实现决策树回归

要在Python上实现决策树模型,我们首先要用sklearn来创建我们的回归模型。通过sklearn.tree库我们实现DecisionTreeRegressor,并通过FIT方法创建我们的对象并使其适合我们的数据集。

# Data Preprocessing

# Importing the Library

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# Importing the dataset

dataset= pd.read_csv('Data.csv')

X = dataset.iloc[: , 1:2].values

Y = dataset.iloc[: , 2].values

# Fitting Simple Linear Regression model to the data set

from sklearn.tree import DecisionTreeRegressor

regressor = DecisionTreeRegressor(random_state = 0)

regressor.fit(X, y)

接下来,我们通过PREDICT函数创建y_pred预测向量,Python代码如下:

# Data Preprocessing

# Importing the Library

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# Importing the dataset

dataset= pd.read_csv('Data.csv')

X = dataset.iloc[: , 1:2].values

Y = dataset.iloc[: , 2].values

# Fitting Simple Linear Regression model to the data set

from sklearn.tree import DecisionTreeRegressor

regressor = DecisionTreeRegressor(random_state = 0)

regressor.fit(X, y)

# Predicting a new result

y_pred = regressor.predict(6.5)

# Visualising the Decision Tree Regression results

X_grid = np.arange(min(X), max(X), 0.1)

X_grid = X_grid.reshape((len(X_grid), 1))

plt.scatter(X, y, color = 'red')

plt.plot(X, regressor.predict(X_grid), color = 'blue')

plt.title('Truth or Bluff (Decision Tree Regression)')

plt.xlabel('Position level')

plt.ylabel('Salary')

plt.show()

最后,我们绘制结果以查看它如何适合数据集。请记住,这里我们没有使用非连续回归模型,因此我们需要以更高的分辨率对其进行可视化。

相关推荐