决策树回归分析

机器学习领域,决策树是一种常用的算法,它可以用于分类和回归问题。在回归问题中,决策树通过学习数据中的模式,构建一个模型来预测连续的输出值。本文将通过一个简单的示例,展示如何使用决策树进行回归分析,并探讨模型复杂度对结果的影响。

首先,创建一个包含噪声的数据集,模拟正弦曲线。然后,使用决策树回归模型来拟合这个数据集。通过调整决策树的最大深度参数,可以控制模型的复杂度。如果最大深度设置得过高,模型可能会学习到训练数据中的噪声,导致过拟合

在本例中,首先导入了必要的模块和库,包括matplotlib用于绘图,numpy用于数据处理,以及sklearn.tree中的DecisionTreeRegressor用于构建决策树回归模型。然后,创建了一个随机数据集,模拟了带有噪声的正弦曲线。接着,使用两个不同最大深度的决策树模型来拟合这个数据集,并预测了测试数据的输出值。最后,绘制了原始数据点和两个模型的预测结果,以直观地展示模型的性能。

通过比较两个模型的预测结果,可以看到,当最大深度设置为2时,模型能够较好地捕捉到数据的总体趋势,而当最大深度设置为5时,模型则过于复杂,学习到了数据中的噪声,导致预测结果出现较大的波动。这说明在实际应用中,需要根据数据的特点和问题的需求,合理地选择模型的参数,以避免过拟合

此外,还可以通过绘制决策树的决策边界,来更直观地理解模型是如何根据输入特征做出预测的。在sklearn中,可以使用plot_tree函数来绘制单个决策树的决策边界,或者使用plot_surface函数来绘制多个决策树的决策边界。这些工具可以帮助更好地理解模型的工作原理,以及如何调整模型的参数来提高预测的准确性。

import matplotlib.pyplot as plt import numpy as np from sklearn.tree import DecisionTreeRegressor # 创建一个随机数据集 rng = np.random.RandomState(1) X = np.sort(5 * rng.rand(80, 1), axis=0) y = np.sin(X).ravel() y[::5] += 3 * (0.5 - rng.rand(16)) # 拟合回归模型 regr_1 = DecisionTreeRegressor(max_depth=2) regr_2 = DecisionTreeRegressor(max_depth=5) regr_1.fit(X, y) regr_2.fit(X, y) # 预测 X_test = np.arange(0.0, 5.0, 0.01)[:, np.newaxis] y_1 = regr_1.predict(X_test) y_2 = regr_2.predict(X_test) # 绘制结果 plt.figure() plt.scatter(X, y, s=20, edgecolor="black", c="darkorange", label="数据") plt.plot(X_test, y_1, color="cornflowerblue", label="max_depth=2", linewidth=2) plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=2) plt.xlabel("数据") plt.ylabel("目标") plt.title("决策树回归") plt.legend() plt.show()
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485