数据分析——随机森林解决回归问题

下表为训练数据集,特征向量只有一维,根据此数据表建立回归决策树。
在这里插入图片描述
在本数据集中,只有一个特征变量,最优切分变量自然是x。接下来考虑9个切分点{1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5},根据下式计算每个待切分点的损失函数值:
在这里插入图片描述
在这里插入图片描述
当切分点s=1.5时,可得c1和c2值
在这里插入图片描述
同理,其他切分点的c1和c2值如下
在这里插入图片描述
当切分点s=1.5时,可得损失函数值
在这里插入图片描述
同理,其他切分点的损失函数值如下
在这里插入图片描述
由上可知,当切分点s=6.5时,损失函数值最小。因此,第一个划分点为(j=x,s=6.5),这是决策树的第一层,划分后可得:
在这里插入图片描述
同理,我们进行第二层切分,经计算R1最佳切分点为3.5,R2最佳切分点为8.5,最终决策树如下图所示
在这里插入图片描述
代码实现:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import tree, linear_model

x = np.arange(1,11,1).reshape(-1,1)
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])

# Fit regression model
model1 = tree.DecisionTreeRegressor(max_depth=2)
model2 = linear_model.LinearRegression()
model1.fit(x, y)
model2.fit(x, y)
 
# Predict
# X_test = np.arange(0.0, 12.0, 0.01)[:, np.newaxis]
X_test = np.arange(0.0, 12.0, 0.01).reshape(-1,1)
y1 = model1.predict(X_test)
y2 = model2.predict(X_test)
 
# Plot the results
fig, axs = plt.subplots(1,1)
axs.scatter(x, y, color="black", label="source data")
axs.plot(X_test, y1, color="red", label="max_depth=2", linewidth=2)
axs.plot(X_test, y2, color='black', label='liner regression', linewidth=2)
plt.xlabel("x")
plt.ylabel("y")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

运行结果:
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值