机器学习笔记——决策树之回归树

(参考资料:菜菜的sklearn)

重要参数,属性及接口

  • criterion
    1)输入"mse"使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失 。
    2)输入“friedman_mse”使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差
    3)输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失

  • 属性中最重要的依然是feature_importances_,接口依然是apply, fit, predict, score最核心

在这里插入图片描述
在回归树中,MSE不只是我们的分枝质量衡量指标,也是我们最常用的衡 量回归树回归质量的指标,我们追求的是MSE越小越好

注意!!回归树的接口score返回的是R平方,并不是MSE。R平方的定义如下:
在这里插入图片描述
其中u是残差平方和,v是总平方和。
**虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差”(neg_mean_squared_error)。**这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均 方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。

实例:一维回归图像的绘制

用回归树来拟合正弦曲线,并添加一些噪声来 观察回归树的表现。
1.导入需要的库

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

2.创建一条含有噪声的正弦曲线

#创建一条含噪声的正弦曲线
rng=np.random.RandomState(1)   #生成随机数种子
5*rng.rand(80,1)   #rand()生成0~1之间的随机数
X = np.sort(5 * rng.rand(80,1), axis=0)   #生成的横坐标的数据
y=np.sin(X).ravel()
y[::5]+=3*(0.5-rng.rand(16))    #[::5],5是步长,每5个数取出来一个加上一个随机数,以此制造噪声
plt.figure()
plt.scatter(X,y,s=20,edgecolor="black",c="darkorange",label="data")  #画散点图

在这里插入图片描述
3.实例化训练模型

#实例化训练模型
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, y)
regr_2.fit(X, y)
  1. 测试集导入模型,预测结果
X_test=np.arange(0.0,5.0,0.01)[:,np.newaxis]   #arange(起始点,结束点,步长),[:np.newaxis]用于升维
y_1=regr_1.predict(X_test)    #生成预测值
y_2=regr_2.predict(X_test)

5.绘制图像

plt.figure()
plt.scatter(X,y,s=20,edgecolor="black",c="darkorange", label="data")  #画散点图
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("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.legend()
plt.show()

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值