[机器学习系列]深入探索回归决策树:从参数选择到模型可视化

目录

一、回归决策树的参数

二、准备数据

 三、构建回归决策树

(一)拟合模型

(二)预测数据

(三)查看特征重要性

 (四)查看模型拟合效果

(五) 可视化回归决策树真实值和预测值

(六)可视化决策树并保存

 部分结果如下:


一、回归决策树的参数

DecisionTreeRegressor(*, criterion='mse', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, presort='deprecated', ccp_alpha=0.0)

具体参数解释可参考下方链接的文档,几乎和分类决策树相差不大 

sklearn.tree.DecisionTreeRegressor-scikit-learn中文社区

二、准备数据
 

from sklearn.datasets import load_boston
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split# 加载数据
boston = load_boston()
# 创建DataFrame
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target# 数据特征和目标变量
X = df.drop('PRICE', axis=1)
y = df['PRICE']# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 打印训练集和测试集的形状
print("训练集特征数据形状:", X_train.shape)
print("训练集目标变量形状:", y_train.shape)
print("测试集特征数据形状:", X_test.shape)
print("测试集目标变量形状:", y_test.shape)

 

 三、构建回归决策树

(一)拟合模型

from sklearn.tree import DecisionTreeRegressor
clf=DecisionTreeRegressor()
clf = clf.fit(X_train, y_train)

(二)预测数据

y_pred=clf.predict(X_test)

(三)查看特征重要性

clf.feature_importances_

 (四)查看模型拟合效果

from sklearn.metrics import r2_score,mean_squared_error, explained_variance_score, mean_absolute_error
print("决策树回归模型测试集R^2:",round(r2_score(y_test,y_pred)))
print("决策树回归模型测试集均方误差:",round(mean_squared_error(y_test,y_pred)))
print("决策树回归模型测试集解释方差分:",round(explained_variance_score(y_test,y_pred)))
print("决策树回归模型测试集绝对误差:",round(mean_absolute_error(y_test,y_pred)))

(五) 可视化回归决策树真实值和预测值

import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']# 假设X_test和y_test已经定义好了
plt.figure(figsize=(10, 6))  # 创建一个新的图形,设置大小
plt.plot(range(len(y_test)), y_test, color='blue', label='实际值')  # 绘制散点图,实际值用蓝色表示
plt.plot(range(len(y_pred)), y_pred, color='red', label='预测值')  # 绘制预测值的线,用红色表示
plt.title('决策树回归预测与实际值对比')  # 图表标题
plt.xlabel('测试集样本')  # X轴标签
plt.ylabel('值')  # Y轴标签
plt.legend()  # 显示图例
plt.grid(True)  # 显示网格
plt.show()  # 显示图表

(六)可视化决策树并保存

import graphviz
from sklearn import tree
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']dot_data = tree.export_graphviz(clf,out_file = None,  filled=True, rounded=True) 
dot_data=dot_data.replace('helvetica', 'SimHei')
graph = graphviz.Source(dot_data) 
graph.render("my_decision_tree", format='png')  # 保存为png格式graph

 部分结果如下:

可通过控制树的深度、叶子节点等参数对决策树进行剪枝操作。可以通过网格搜索法进行参数调优。具体可参考往期博客:

决策树分类任务实战(python 代码详解)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NVIDIA_SMI has failed because it couldn’t communicate with the NVIDIA driver

参考:https://www.zhihu.com/question/474222642/answer/3127013936 https://blog.csdn.net/ZhouDevin/article/details/128265656 nvidia-smi查看报错,nvcc正常 1)查看nvidia版本 ls /usr/src | grep nvidia nvidia-550.78 2)…

暗区突围国际服pc端怎么获取测试资格 twitch掉落资格获取教程

《暗区突围》是由腾讯魔方工作室群开发的第一人称射击类手游。游戏以从暗区撤离并收集物资满载而归作为最终目的,带出的战利品可以存储在仓库中,又可以出售用以换取游戏金钱。游戏中玩家可以创建男性或女性角色,可以通过选择脸型、发型、发色…

C++ 动态内存管理

例如:动态内存和释放单个数据的存储区 一 用new运算符初始化单个数据的存储区 举例

【智能算法】人工原生动物优化算法(APO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.获取代码 1.背景 2024年,X Wang受到自然界原生动物启发,提出了人工原生动物优化算法( Artificial Protozoa Optimizer, APO)。 2.算法原理 2.1算法思想 AP…

压缩归档库-Snappy介绍

1.简介 Snappy 是一个 C 编写的压缩和解压缩库,由 Google 开发。它专为速度而设计,而不是最大压缩率或与其他压缩库的兼容性。 Snappy 通常用于需要快速压缩和解压缩的场景。 Snappy具有以下属性: 快速:压缩速度达到250 MB/秒及…

数智化快速开发平台

助力企业IT规划标准化,实现企业IT生态化 目前市场上有很多面向企业各种业务场景的产品,这些产品给企业管理带来便利性的同时,也带来了一系列问题,例如: 不同系统的后台管理功能基本一致,却需要重复建设&a…

linux调试

文章目录 1. 使用打印来调试1.1 重定向1.2 标准预定义宏1.3 日志代码 2. 内核异常2.1 内核打印2.1.1 打印级别2.1.2 跟踪异常2.1.3 动态打印2.1.4 RAM console 2.2 OOPS2.2.1 有源代码的情况2.2.2 没有源代码的情况 3 查看日志4 工具调试 1. 使用打印来调试 1.1 重定向 2>…

[Collection与数据结构] Map与Set(一):二叉搜索树与Map,Set的使用

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …

python socket通讯 学习记录

python socket 1. 初级实现2. 添加header3. 中级实现(引用pickle库)4. 高级实现(相互发送信息)5. 一点尝试5. 1个server对应2个client5.2个server对应1个client 名称版本python3.11 本文涉及到socket的server与client通讯从简单到…

LeetCode 257. 二叉树的所有路径

LeetCode 257. 二叉树的所有路径 1、题目 题目链接:257. 二叉树的所有路径 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root…

java.net.SocketInputStream.socketRead0 卡死导致 tomcat 线程池打满的问题

0 TL;DR; 问题与原因:某些特定条件下 java.net.SocketInputStream.socketRead0 方法会卡死,导致运行线程一直被占用导致泄露采用的方案:使用监控线程异步监控卡死事件,如果发生直接关闭网络连接释放链接以及对应的线程 1. 问题 …

nacos下载安装和nacos启动报错

nacos简介: Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您…

YOLOv9中模块总结补充|RepNCSPELAN4详图

专栏地址:目前售价售价69.9,改进点70 专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,助力高效涨点!!! 1. RepNCSPELAN4详图 RepNCSPELAN4是YOLOv9中的特征提取-融合模块,类似前几…

【数据结构-二叉搜索树的增删查改】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

[虚拟机+单机]梦幻契约H5修复版_附GM工具

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 视频演示 [虚拟机单…

vue2人力资源项目2登录接口、跳转主页

用户名和密码 解决跨域问题 1.在vue.config.js里配置 proxy: {// 如果请求地址里有api,就转成这个地址/api: {target: https://heimahr.itheima.net/}}// before: require(./mock/mock-server.js)}, axios封装 utils/request.js import axios from axios// creat…

Linux-信号执行

1. 信号什么时候被处理 当进程从内核态返回到用户态的时候,进行信号的检测和处理 什么内核态,什么又是用户态呢? 当进程在CPU上运行时,内核态:允许进程访问操作系统的代码和数据,用户态:进程只…

户口本翻译件怎么处理?

户口本是中国公民的重要证件,由中华人民共和国公安部精心制作,不仅是国内身份的凭证,更是走向世界的一张关键名片。对于想出国留学 、追求移民生活或是追寻异国风情的旅行者来说,户口本翻译件都是不可或缺的一部分。那么&#xf…

Duplicate entry ‘asdfg‘ for key ‘clazz.name‘

Mybatis:java.sql.SQLIntegrityConstraintViolationException:Duplicate entry ‘asdfg’ for key ‘clazz.name’ 违反了数据库的唯一约束条件,即插入数据的时候具有唯一约束(被unique修饰)的列值重复了 在修改的过程中发生错误,…

【LLM 论文】Least-to-Most Prompting 让 LLM 实现复杂推理

论文:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models ⭐⭐⭐ Google Research, ICLR 2023 论文速读 Chain-of-Thought(CoT) prompting 的方法通过结合 few-show prompt 的思路,让 LLM 能够挑战更具…