决策树回归分析

决策树回归是一种机器学习算法,它通过构建决策树模型来预测连续的数值型目标变量。在本例中,使用决策树来拟合一个带有噪声的正弦曲线。通过调整决策树的最大深度(由参数max_depth控制),可以观察到模型是如何学习数据中的局部线性回归,从而近似正弦曲线的。如果决策树的最大深度设置得过高,模型可能会学习到训练数据中的噪声,导致过拟合现象。

在本例中,首先导入了必要的模块和库,包括matplotlib用于绘图,numpy用于数据处理,以及sklearn.tree中的DecisionTreeRegressor用于构建决策树回归模型。然后,创建了一个随机数据集,其中X是排序后的随机数,y是对应的正弦值,并且在每五个点上添加了一些随机噪声。接着,分别用最大深度为2和5的决策树模型来拟合这个数据集,并在测试集上进行预测。最后,绘制了原始数据点和两个不同深度决策树模型的预测结果。

从图中可以看出,当决策树的最大深度为2时,模型的预测结果较为平滑,能够较好地捕捉到正弦曲线的总体趋势。而当最大深度增加到5时,模型的预测结果变得更加复杂,开始学习到数据中的一些局部细节,这可能导致模型对训练数据过拟合。因此,在实际应用中,需要根据数据的特点和模型的性能来合理选择决策树的最大深度,以达到最佳的拟合效果。

此外,还提供了Jupyter notebook和Python源代码的下载链接,方便读者进一步学习和实践。通过这个示例,可以更深入地理解决策树回归的原理和应用,以及如何通过调整模型参数来避免过拟合现象。同时,这个示例也展示了如何使用matplotlib和sklearn库来构建和评估机器学习模型,为读者提供了一个实用的学习资源。

代码示例

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