当前位置: 首页 > article >正文

【菜菜的sklearn机器学习】(2)回归树

课程学习:1 7. 回归树:参数,属性和接口_哔哩哔哩_bilibili

课程2-回归树DecisionTreeRegressor

回归树的参数、属性及接口和决策树几乎都一样,但是回归树没有标签分布是否均衡的问题(因为是连续回归),所以没有class_weight这样的参数。(一个是连续型变量,一个是分类型变量)

1、重要参数、属性、接口

Criterion:

mse(mean squared error 均方误差):常用

friedman_mse(费尔德曼均方误差)

mae(mean absolute error绝对平均误差):0.20以上版本才有

属性feature_importances_,接口依然是apply,fit,predict,score

回归树的接口score返回的是R平方(可±),不是MSE(+)

=>交叉验证的时候,sklearn自动使用负均方误差作为计算

2、交叉验证:用于观察模型的稳定性。

将数据划分为n份,一次使用其中的一份作为测试集,其他n-1份作为训练集,多次计算模型的准确性来评估模型的平均准确程度。

# 实例化 交叉验证

regressor = DecisionTreeRegressor(random_state=0)

cross_val_score(regressor,boston.data,boston.target,cv=10)

五个参数:

regressor模型评估器:任何实例化后的算法模型

Boston.data完整的特征数据集:不需要划分数据集和测试集

Boston.target完整的标签

Cv=10:交叉验证10次,即数据集分成十份;通常默认取5

Scoring衡量模型

3、eg.利用决策树你和一条正弦曲线,并观察回归树的表现

step1:导入需要的库

import numpy as np # 生成数据点
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt # 画图

step2:创建一条含有噪声的正弦曲线

 # 2.创建一条含有噪声的正弦曲线
# 思路:先创建随机分布在0-5的x坐标,得y,再到y上添加噪声
rng = np.random.RandomState(1)
X = np.sort( 5 * rng.rand(80,1), axis=0 )
Y = np.sin(X).ravel()

# ①理想中/无噪声
plt.figure()
plt.scatter(X, Y, s=20, edgecolor="black",c="darkorange",label="data")

# ②加噪声
Y[::5] += 3 * (0.5 - rng.rand(16)) # 切片每5个数字取一个,所以80总能取16个;*3变大
plt.figure()
plt.scatter(X, Y, s=20, edgecolor="blue", c="red")

step3:实例化&训练模型

# 建两个模型:不同的拟合效果下,回归树是怎样表现的(max_depth最大深度会限制模型拟合)
regr_1 = DecisionTreeRegressor(max_depth=2)
regr_2 = DecisionTreeRegressor(max_depth=5)
regr_1.fit(X, Y)
regr_2.fit(X, Y)

step4:将测试集导入模型,预测效果

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)

step5:绘图

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()
# y1和正弦曲线的趋势一致;y2波动大,说明受噪声的影响,出现过拟合
# 如果树的最大深度太高(max_depth控制),则决策树学习得太精细。从训练数据中学习了很多细节,包括噪声,从而使模型偏离真实曲线,形成过拟合

通过这个案例可以发现:如果树的最大深度太高(max_depth控制),则决策树学习得太精细。从训练数据中学习了很多细节,包括噪声,从而使模型偏离真实曲线,形成过拟合。

(1)

Fit中不能输入一维数组,用reshape;y只能导入一维数据,x是二维,所以要用降维函数ravel()

np.random.random((2,1))

np.random.random((2,1)).ravel()

np.random.random((2,1)).ravel().shapr

(2)scatter绘制散点图

(3)了解增维切片np.newaxis的用法

 


http://www.kler.cn/a/301856.html

相关文章:

  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】静态数组
  • 一文3000字从0到1带你进行Mock测试(建议收藏)
  • 【Linux:epoll】
  • springboot实现简单的数据查询接口(无实体类)
  • 源码解析-Spring Eureka(更新ing)
  • RK3568平台(I2C篇)i2c_transfer接口详解
  • 设计模式 22 模板方法模式
  • electron 客户端 windows linux(麒麟V10)多系统离线打包 最新版 <一>
  • 【系统架构设计师】建造者模式(Builder Pattern)
  • Android通知——Notification
  • 【JUC并发编程系列】深入理解Java并发机制:从synchronized到CAS锁升级全过程(三、synchronized 前置知识)
  • SpringBoot教师招聘管理系统---附源码81097
  • ios调整启动图显示的时间
  • Java | Leetcode Java题解之第402题移掉K位数字
  • RabbitMQ 07 另两种集群方式 warren(主备模式),shovel(远程模式)
  • Java算法:二进制和位运算
  • redis的事务与管道有什么不同?
  • 闪存产品概述 NAND NOR FLASH
  • Redis——常用数据类型string
  • 【网络通信基础与实践第二讲】包括互联网概述、互联网发展的三个阶段、互联网的组成、计算机网络的体系结构
  • python 连接 oracle 报错
  • 2024 年 GitLab Global DevSecOps 报告解读
  • springboot 项目对配置文件中的密码进行加密处理
  • 【生日视频制作】海底石碑雕刻AE模板修改文字软件生成器教程特效素材【AE模板】
  • C语言代码练习(第十八天)
  • Docker 之虚悬镜像