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

【Python机器学习】树回归——将CART算法用于回归

要对数据的复杂关系建模,可以借用树结构来帮助切分数据,如何实现数据的切分?怎样才能知道是否已经充分切分?这些问题的答案取决于叶节点的建模方式。回归树假设叶节点是常数值,这种策略认为数据中的复杂关系可以用树结构来概括

为成功构建以分段常数为叶节点的树,需要度量出数据的一致性。事实上,在数据集上计算混乱度是非常简单的:首先计算所有数据的均值,然后计算每条数据的值到均值的差值。为了对正负值差同等看待,一般使用绝对值或平方值来代替上述差值。

构建树

构建回归树,需要补充一些新的代码。给定某个误差计算方法,该函数会找到数据集上最佳的二元切分方式。另外,该函数还要确定什么时候停止切分,一旦停止切分会生成一个叶节点。因此,函数只需要完成两件事:用最佳方式切分数据集和生成相应的叶节点。

下面的代码中,chooseBestSplit()最复杂,该函数的目标是找到数据集切分的最佳位置。它遍历所有的特征及其可能的取值来找到使误差最小化的切分阈值。该函数的伪代码大致如下:

对每个特征:

    对每个特征值:

        将数据集切分成两份

        计算切分的误差

        如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差

返回最佳切分的特征和阈值

具体实现代码:

def binSplitDataSet(dataSet,feature,value):mat0=dataSet[nonzero(dataSet[:,feature]>value)[0],:][0]mat1=dataSet[nonzero(dataSet[:,feature]<=value)[0],:][0]return mat0,mat1def regLeaf(dataSet):# 负责生成叶节点。当chooseBestSplit()函数确定不再对数据进行切分时,调用本函数来得到叶节点的模型,在回归树中,该模型其实就是目标变量的均值return mean(dataSet[:,-1])def regErr(dataSet):#在给定数据上计算目标变量的平方误差。return var(dataSet[:,-1])*shape(dataSet)[0]def chooseBestSplit(dataSet,leafType=regLeaf,errType=regErr,ops=(1,4)):#回归树构建的核心函数,目的是找到数据的最佳二元切分方式。#如果找不到一个好的二元切分,返回None并同时调用createTree()来产生叶节点,叶节点的值也会返回None#tolS和tolN是用户指定的参数,用于控制函数的停止时机。其中tolS是容许的误差下降值,tolN是切分的最小样本数。tolS=ops[0]tolN=ops[1]if len(set(dataSet[:,-1].T.tolist()[0]))==1:#如果剩余特征的数目为1,那么就不需要再切分而直接返回return None,leafType(dataSet)m,n=shape(dataSet)S=errType(dataSet)bestS=infbestIndex=0bestValue=0for featIndex in range(n-1):for splitVal in set(dataSet[:,featIndex]):mat0,mat1=binSplitDataSet(dataSet,featIndex,splitVal)if (shape(mat0)[0]<tolN) or (shape(mat1)[0]<tolN):continuenewS=errType(mat0)+errType(mat1)if newS<bestS:bestIndex=featIndexbestValue=splitValbestS=newSif (S-bestS)<tolS:#如果切分数据集后效果提升不够大,那么就不进行切分操作而直接创建叶节点return None,leafType(dataSet)mat0,mat1=binSplitDataSet(dataSet,bestIndex,bestValue)if (shape(mat0)[0]<tolN) or (shape(mat1)[0]<tolN):return bestIndex,bestValue

相关文章:

【Python机器学习】树回归——将CART算法用于回归

要对数据的复杂关系建模&#xff0c;可以借用树结构来帮助切分数据&#xff0c;如何实现数据的切分&#xff1f;怎样才能知道是否已经充分切分&#xff1f;这些问题的答案取决于叶节点的建模方式。回归树假设叶节点是常数值&#xff0c;这种策略认为数据中的复杂关系可以用树结…...

前端(HTML + CSS)小兔鲜儿项目(仿)

前言 这是一个简单的商城网站&#xff0c;代码部分为HTML CSS 和少量JS代码 项目总览 一、头部区域 头部的 购物车 和 手机 用的是 文字图标&#xff0c;所以效果可以和文字一样 购物车右上角用的是绝对定位 logo用的是 h1 标签&#xff0c;用来提高网站搜索排名 二、banne…...

【Rust光年纪】构建高效终端用户界面:Rust库全面解析

构建优雅终端应用&#xff1a;深度评析六大Rust库 前言 随着Rust语言的流行和应用场景的不断扩大&#xff0c;对于终端操作和用户界面构建的需求也日益增长。本文将介绍一些在Rust语言中常用的终端操作库和用户界面构建库&#xff0c;以及它们的核心功能、使用场景、安装与配…...

鼠标滑动选中表格部分数据列(vue指令)

文章目录 代码指令代码使用代码 代码 指令代码 // 获得鼠标移动的范围 function getMoveRange(startClientX, endClientX, startClientY, endClientY) {const _startClientX Math.min(startClientX, endClientX);const _endClientX Math.max(startClientX, endClientX);con…...

“5G+Windows”推动全场景数字化升级:美格智能5G智能模组SRM930成功运行Windows 11系统

操作系统作为连接用户与数字世界的桥梁&#xff0c;在数字化迅速发展的时代扮演着至关重要的角色&#xff0c;智能设备与操作系统的协同工作&#xff0c;成为推动现代生活和商业效率的关键力量。其中&#xff0c;Windows系统以其广泛的应用基础和强大的兼容性成为全球最广泛使用…...

c语言学习,isupper()函数分析

1&#xff1a;isupper() 函数说明&#xff1a; 检查参数c&#xff0c;是否为大写英文字母。 2&#xff1a;函数原型&#xff1a; int isupper(int c) 3&#xff1a;函数参数&#xff1a; 参数c&#xff0c;为检测整数 4&#xff1a;返回值&#xff1a; 参数c是大写英文字母&…...

Adnroid 数据存储:SharedPreferences详解【SharedPreferencesUtils,SharedPreferences的ANR】

目录 1&#xff09;SP是什么、如何使用&#xff0c;SPUtils 2&#xff09;SP的流程 3&#xff09;comit和apply 一、SP是什么&#xff0c;如何使用&#xff0c;SPUtils 1.1 SP是什么&#xff1f; SharedPreferences是Android平台提供的一种轻量级的数据存储方式&#xff0c;…...

Sentinel 规则持久化到 Nacos 实战

前言&#xff1a; 前面系列文章我们对 Sentinel 的作用及工作流程源码进行了分析&#xff0c;我们知道 Sentinel 的众多功能都是通过规则配置完成的&#xff0c;但是我们前面在演示的时候&#xff0c;发现 Sentinel 一重启&#xff0c;配置的规则就没有了&#xff0c;这是因为…...

服务器CPU天梯图2024年8月,含EYPC/至强及E3/E5

原文地址&#xff08;高清无水印原图/持续更新/含榜单出处链接&#xff09;&#xff1a; >>>服务器CPU天梯图<<< 本文提供的服务器CPU天梯图数据均采集自各大专业网站&#xff0c;榜单图片末尾会标准其来源&#xff08;挂太多链接有概率会被ban&#xff0c;…...

SpringBoot加载dll文件示例

1、将动态库放在resource文件目录下 2、编写相关加载逻辑 import lombok.extern.slf4j.Slf4j; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.util.HashMap;/*** Description: 加载动态库 .dll文件* author: Be.insighted* c…...

9.C基础_指针与数组

数组指针&#xff08;一维数组&#xff09; 数组指针就是" 数组的指针 "&#xff0c;它是一个指向数组首地址的指针变量。 1、数组名的含义 对于一维数组&#xff0c;数组名就是一个指针&#xff0c;指向数组的首地址。 基于如下代码进行分析&#xff1a; int a…...

C语言——结构体与共用体

C语言——结构体与共用体 结构体共用体 结构体 如果将复杂的复杂的数据类型组织成一个组合项&#xff0c;在一个组合项中包含若干个类型不同&#xff08;当然也可以相同&#xff09;的数据项。 C语言允许用户自己指定这样一种数据结构&#xff0c;它称为结构体。 结构体的语法…...

vs+qt项目转qt creator

1、转换方法 打开vs工程&#xff0c;右键项目&#xff0c;Qt->Create Base .pro File 后面默认OK 如果工程有include和lib路径需要配置&#xff0c;则转换后的工程&#xff0c;需要修改pro文件 2.修改pro文件 例如转换后的工程如下&#xff1a; 修改后 # ------------…...

微信小程序 checkbox 实现双向绑定以及特殊交互处理

wxml文件代码如下&#xff1a; <!--页面顶部 引入wxs文件--> <wxs module"tools" src"../../filter/tools.wxs"></wxs> ... <checkbox-group bindchange"checkboxChange"><label class"weui-cell weui-check__…...

我在高职教STM32——I2C通信之读写EEPROM(1)

大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助CSDN平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分…...

【ARM】应用ArmDS移植最小FreeRTOS系统

【更多软件使用问题请点击亿道电子官方网站】 一、文档背景 FreeRTOS&#xff08;Free Real-Time Operating System&#xff09;是一个开源的实时操作系统内核&#xff0c;广泛应用于嵌入式系统。它具有小巧、灵活、低功耗等特点&#xff0c;支持多任务调度、信号量、队列等实…...

golang下载、上传文件MD5高效计算方法,利用io.TeeReader函数特性 实时计算文件md5签名

在go语言的开发中&#xff0c;当我们在操作下载或者上传文件对象时&#xff0c; 我们可以利用golang内置的io包中的 TeeReader函数特性&#xff0c;高效实时计算文件的md5值。 方法如下&#xff1a; TeeReader高效计算文件md5示例 保存上传文件&#xff0c;并使用文件的md5签…...

TreeMap实现根据值比较

前言&#xff1a; TreeMap普通的排序方法都是根据键来比较来排序&#xff0c;本篇文章实现两种方式实现值排序 1.使用 SortedSet 和 Stream API 如果你想要一个持久化的排序结果&#xff0c;你可以使用 SortedSet 结构来存储键值对的条目。 TreeSet<Map.Entry<String, …...

2024前端面试(内容持续更新)

Vue篇 data为什么是个函数&#xff1f; 在‌Vue中&#xff0c;‌data必须是一个‌函数&#xff0c;这是因为当data是函数时&#xff0c;每个组件实例化时都会调用该函数&#xff0c;返回一个新的数据对象&#xff0c;从而保证每个组件实例拥有独立的数据&#xff0c;避免数据冲…...

接口基础知识5:详解request headers(一篇讲完常见字段)

课程大纲 一、请求头的定义 HTTP请求头部&#xff08;HTTP Request Headers&#xff09;&#xff1a;HTTP协议中的一部分&#xff0c;用于在客户端和服务器之间传递附加信息。这些头部字段提供了关于请求、客户端环境、或请求的上下文的信息。 请求头是键值对的形式&#xff…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...