sklearn中的决策树-分类树:剪枝参数
剪枝参数
- 在不加限制的情况下,一棵决策树会生长到衡量不纯度的指标最优,或者没有更多的特征可用为止。这样的决策树 往往会过拟合。为了让决策树有更好的泛化性,我们要对决策树进行剪枝。剪枝策略对决策树的影响巨大,正确的剪枝策略是优化 决策树算法的核心。
sklearn
为我们提供了不同的剪枝策略:
max_depth
-
限制树的最大深度,超过设定深度的树枝全部剪掉
这是用得最广泛的剪枝参数,在高维度低样本量时非常有效。决策树多生长一层,对样本量的需求会增加一倍,所 以限制树深度能够有效地限制过拟合。在集成算法中也非常实用。实际使用时,建议从=3开始尝试,看看拟合的效 果再决定是否增加设定深度。
min_samples_leaf & min_samples_split
-
min_samples_leaf
限定,一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf
个训练样本,否则分 枝就不会发生,或者,分枝会朝着满足每个子节点都包含min_samples_leaf
个样本的方向去发生。min_samples_leaf
限定,一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf
个训练样本,否则分 枝就不会发生,或者,分枝会朝着满足每个子节点都包含min_samples_leaf
个样本的方向去发生 一般搭配max_depth
使用,在回归树中有神奇的效果,可以让模型变得更加平滑。这个参数的数量设置得太小会引 起过拟合,设置得太大就会阻止模型学习数据。一般来说,建议从=5开始使用。如果叶节点中含有的样本量变化很 大,建议输入浮点数作为样本量的百分比来使用。同时,这个参数可以保证每个叶子的最小尺寸,可以在回归问题 中避免低方差,过拟合的叶子节点出现。对于类别不多的分类问题,=1通常就是最佳选择。 -
min_samples_split
限定,一个节点必须要包含至少min_samples_split
个训练样本,这个节点才允许被分枝,否则 分枝就不会发生。 -
min_samples_leaf
= 10min_samples_split
= 25# -*- coding: utf-8 -*-""" ************************************************** @author: Ying @software: PyCharm @file: 3、分类树_min_samples_leaf& min_samples_split.py @time: 2021-08-26 10:51 ************************************************** """ from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split import pandas as pd import graphviz# 加载数据 wine = load_wine() data = pd.DataFrame(wine.data, columns=wine.feature_names) # X target = pd.DataFrame(wine.target) # y# 划分训练测试集 X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3)clf = tree.DecisionTreeClassifier(criterion="entropy", random_state=30, splitter="random", max_depth=3, min_samples_leaf=10, min_samples_split=25)clf.fit(X_train, y_train) score = clf.score(X_test, y_test) # 返回预测的准确度# 保存决策树图 feature_name = ['酒精', '苹果酸', '灰', '灰的碱性', '镁', '总酚', '类黄酮', '非黄烷类酚类','花青素', '颜色强度', '色调', 'od280/od315稀释葡萄酒', '脯氨酸']dot_data = tree.export_graphviz(clf, feature_names=feature_name, class_names=["琴酒", "雪莉", "贝尔摩德"], filled=True # 填充颜色, rounded=True # 圆角) graph = graphviz.Source(dot_data)graph.render(view=True, format="png", filename="./save/decisiontree_pdf")# 特征重要性 feature_importances = clf.feature_importances_a = pd.DataFrame([*zip(feature_name, feature_importances)]) a.columns = ['feature', 'importance'] a.sort_values('importance', ascending=False, inplace=True) print(a)
max_features & min_impurity_decrease
- 一般max_depth使用,用作树的”精修“ max_features限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃。和max_depth异曲同工, max_features是用来限制高维度数据的过拟合的剪枝参数,但其方法比较暴力,是直接限制可以使用的特征数量 而强行使决策树停下的参数,在不知道决策树中的各个特征的重要性的情况下,强行设定这个参数可能会导致模型 学习不足。如果希望通过降维的方式防止过拟合,建议使用PCA,ICA或者特征选择模块中的降维算法。 min_impurity_decrease限制信息增益的大小,信息增益小于设定数值的分枝不会发生。这是在0.19版本中更新的 功能,在0.19版本之前时使用min_impurity_split。
确定最优剪枝参数(超参数曲线)
-
那具体怎么来确定每个参数填写什么值呢?这时候,我们就要使用确定超参数的曲线来进行判断了,继续使用我们 已经训练好的决策树模型clf。超参数的学习曲线,是一条以超参数的取值为横坐标,模型的度量指标为纵坐标的曲 线,它是用来衡量不同超参数取值下模型的表现的线。在我们建好的决策树里,我们的模型度量指标就是score。
# -*- coding: utf-8 -*-""" ************************************************** @author: Ying @software: PyCharm @file: 4、分类树_超参数曲线.py @time: 2021-12-01 11:28 ************************************************** """from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split import pandas as pd import matplotlib.pyplot as plt# 加载数据 wine = load_wine() data = pd.DataFrame(wine.data, columns=wine.feature_names) # X target = pd.DataFrame(wine.target) # y# 划分训练测试集 X_train, X_test, y_train, y_test = train_test_split(data, target, test_size=0.3)test = [] for i in range(10):clf = tree.DecisionTreeClassifier(max_depth=i+1,criterion="entropy",random_state=10,splitter='random')clf = clf.fit(X_train, y_train)score = clf.score(X_test, y_test)test.append(score) plt.plot(range(1,11),test,color="red",label="max_depth") plt.legend() plt.show()
相关文章:
sklearn中的决策树-分类树:剪枝参数
剪枝参数 在不加限制的情况下,一棵决策树会生长到衡量不纯度的指标最优,或者没有更多的特征可用为止。这样的决策树 往往会过拟合。为了让决策树有更好的泛化性,我们要对决策树进行剪枝。剪枝策略对决策树的影响巨大,正确的剪枝策…...
算法随笔_59: 子数组最小乘积的最大值
上一篇:算法随笔_58: 队列中可以看到的人数-CSDN博客 题目描述如下: 一个数组的 最小乘积 定义为这个数组中 最小值 乘以 数组的 和 。 比方说,数组 [3,2,5] (最小值是 2)的最小乘积为 2 * (325) 2 * 10 20 。 给你一个正整数数组 nums …...
线性模型 - 支持向量机延伸
为了更好的理解支持向量机模型,本文我们延伸学习和理解一下和支持向量机相关的一些概念,这些概念都是偏理论和数学的知识,比较抽象和复杂,而且需要一定的高等数学知识。大家可以先明白其所包含的意义,然后逐步深入理解…...
力扣3464. 正方形上的点之间的最大距离
力扣3464. 正方形上的点之间的最大距离 题目 题目解析及思路 题目要求在points集合中找出k个点,k个点之间的最小的曼哈顿距离的最大值 最大最小值的题一般直接想到二分 将正方形往右展开成一条线,此时曼哈顿距离为两点直线距离**(仅起点右边的点)** …...
AI数字人源码搭建部署指南
为实现AI数字人的智能交互功能,需开发包含语音识别、自然语言处理、机器学习等技术的AI算法和模型。利用TensorFlow、PyTorch等深度学习框架完成模型训练。具体步骤包括以下四个方面: 需求分析:通过市场调研、用户访谈、专家咨询等方式&…...
智能拖把控制板开发
智能拖把控制板开发全流程解析 一、硬件架构与H桥驱动设计 工程师小明选用四颗AO3400A低导通电阻MOS管构建H桥驱动拓扑,实测全桥导通电阻仅15mΩ,较传统方案降低40%损耗。通过优化PCB布局将驱动环路电感控制在15nH以内,配合10kHz互补PWM信号…...
【Swift 算法实战】利用 KMP 算法高效求解最短回文串
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
【数字化转型+AI:现代企业腾飞的一对翅膀】
——解析数字时代的核心竞争力 在全球化竞争与技术迭代加速的今天,传统企业若想突破增长瓶颈,必须抓住两大核心驱动力:数字化转型与人工智能(AI)。这两大技术如同企业腾飞的双翼,共同构建敏捷性、创…...
Zabbix——踩坑HttpRequest,header添加无效
背景 在试图尝试通过Zabbix接入DeepSeek API的时候,由于使用了HTTP的方式,所以需要使用Zabbix 自带的HttpRequest库进行请求,产生了下面的问题 问题 curl curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completio…...
MTK Android12 预装apk可卸载
文章目录 需求解决方法1、device/mediatek/mt6761/device.mk2、/vendor/mediatek/proprietary/frameworks/base/data/etc/pms_sysapp_removable_vendor_list.txt3、路径:4、Android.mk 需求 近期,客户需要预装一个apk,同时该apk要可卸载。解…...
让网页“浪“起来:打造会呼吸的波浪背景
每次打开那些让人眼前一亮的网页时,你是否有注意到那些看似随波逐流的动态背景?今天咱们不聊高深的技术,就用最朴素的CSS,来解锁这个让页面瞬间鲜活的秘籍。无需JavaScript,不用复杂框架,准备好一杯咖啡&am…...
YOLO11的单独推理程序
YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理。 YOLO11的单独推理程序,可以实例化加载一次多次推理…...
代码随想录day21
669.修剪二叉搜索树 //理解修建后重建树的概念 TreeNode* trimBST(TreeNode* root, int low, int high) {if(root nullptr) return nullptr;if(root->val < low){TreeNode* node trimBST(root->right, low, high);return node;}if(root->val > high){TreeNod…...
利用Ai对生成的测试用例进行用例评审
利用AI对生成的测试用例进行用例评审,可以从用例的完整性、有效性、一致性等多个维度展开,借助自然语言处理、机器学习等技术,提高评审效率和准确性。以下为你详细介绍具体方法: 1. 需求匹配度评审 利用自然语言处理(NLP)技术 步骤:首先将软件需求文档和生成的测试用例…...
JAVAweb-JS基本数据类型,变量,DOM,pop,push函数,事件
JavaScript,可以嵌套在静态页面中添加一些动态语言. JavaScript是开发web脚本语言,但也被用到了很多非浏览器环境中,比如node平台 JS可以嵌套在静态页面中可以给静态页面添加一些动态效果(脚本语言),不同浏览器厂商(在浏览器中都有内置解析器解析JS语法) <!DOCTYPE html&g…...
SpringBoot源码解析(十一):准备应用上下文
SpringBoot源码系列文章 SpringBoot源码解析(一):SpringApplication构造方法 SpringBoot源码解析(二):引导上下文DefaultBootstrapContext SpringBoot源码解析(三):启动开始阶段 SpringBoot源码解析(四):解析应用参数args Sp…...
Python CNN基于深度学习的轴承故障智能检测平台
一、 项目概述 本项目旨在利用深度学习技术,构建一个基于Python的轴承故障智能检测平台。该平台能够对轴承的振动信号进行分析,自动识别轴承的健康状态,并判断故障类型,从而实现轴承故障的早期预警和诊断,提高设备的运…...
CCNP知识笔记
路由选路原理 路由信息来源 路由信息怎么来的? 直连路由(C): 通过直连接口UP产生智联路由条目(物理层UP数据链路层UP) 静态路由(S): 通过网络管理员逐条写入的路由条…...
递归树求解递归方程
*递归树是迭代计算模型 *递归树的生成过程与迭代过程一致 *根据递归定义不断扩展递归树,直到边界条件(其值已知) *对递归树产生的所有项求和就是递归方程的解 例一: T(n) 1 n1 T(n) 2T(n/2) n n>1 对于…...
2025年【熔化焊接与热切割】找解析及熔化焊接与热切割模拟试题
在当今工业领域,熔化焊接与热切割技术作为重要的加工手段,广泛应用于各种金属结构的制造与维修中。然而,这些作业过程伴随着高风险,对从业人员的安全知识和技能提出了极高的要求。为了提升相关人员的安全意识和操作技能࿰…...
Linux系统:服务器常见服务默认IP端口合集
服务器的默认IP端口取决于所使用的协议和服务类型。以下是一些常见服务和协议的默认端口: 服务端口实例: HTTP服务 默认端口:80 说明:用于普通的HTTP网页访问。例如,访问 http://example.com 时,默认使用8…...
LangChain教程 - RAG - PDF摘要
系列文章索引 LangChain教程 - 系列文章 随着人工智能和大语言模型(LLM)的快速发展,越来越多的工具和平台被引入以简化我们的日常任务。LangChain是一个非常强大的框架,它能够帮助开发者构建与LLM(如OpenAI、Ollama等…...
[java基础-JVM篇]3_JVM类加载机制
摘要:JVM通过设立不同优先级和职责的加载器保证了类加载的安全性与灵活性,即双亲委派机制,但是实际生产中更复杂的需求又需要破坏双亲委派,即打破JVM约定过的类加载程序 目录 类的生命周期 类加载 加载 类加载器 双亲委派机制…...
相似性搜索(2)
在本篇中,我们通过播客相似性搜索为例,进一步研究基于chroma 的相似性搜索: 参考: https://www.kaggle.com/code/switkowski/building-a-podcast-recommendation-engine/notebook 数据集来源: https://www.kaggle.…...
Linux 本地部署 Deepseek-R1 大模型!
DeepSeek-R1 的发布,掀起了一场风暴! 开源、强大、本地可部署,真正私有的 AI 助手,不受网络、隐私等限制,数据安全感直接拉满! 今天,手把手带你在 Linux 上本地部署 DeepSeek-R1,关…...
软件测试高频面试题
以下是一些软件测试高频面试题: 基础概念类 HTTP和HTTPS的区别:HTTPS使用SSL/TLS协议对传输数据加密,HTTP没有加密;HTTPS可确保数据完整性,防止传输中被篡改,HTTP不保证;HTTP默认用80端口&…...
光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验
前言 在蓝牙音箱市场竞争日益激烈的当下,开发一款性能卓越且易于上手的蓝牙音箱,成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC,无疑为行业带来了全新的解决方案,以其诸多独特卖点,迅…...
数据安全_笔记系列01:数据分类分级与敏感数据识别详解
数据安全_笔记系列01:数据分类分级与敏感数据识别详解 1)、数据分类分级与敏感数据识别详解 数据分类分级是数据安全治理的核心环节,旨在根据数据的敏感性和重要性,制定差异化的保护策略。以下从 定义、法规、方法、工具、案例 等维度全面解…...
SOUI基于Zint生成UPC码
UPC 码(Universal Product Code,通用产品代码)是一种广泛使用的条形码系统,主要用于零售商品的标识和追踪。有两种主要格式:UPC-A 和 UPC-E。 UPC-A 长度12位数字。适用于大型商品 UPC-E 长度8位数字。UPC-E是UPC-A…...
MySQL 主从同步延迟:原因剖析与解决之道
在现代数据库应用中,MySQL 的主从同步是一种常见且重要的架构模式,它能提供数据备份、读写分离等诸多优势,有效提升系统的可用性和性能。然而,主从同步延迟问题却常常困扰着数据库管理员和开发者,严重时甚至会影响业务…...
C语言数据结构—二叉树的链式结构实现
目录 1、建立二叉树 1.1 二叉树的结构 1.2 手动建立二叉树 2、二叉树的遍历 2.1 二叉树的三种遍历方式 2.1.1 前序遍历 2.1.2 中序遍历 2.1.2 后序遍历 3、求二叉树的结点数和二叉树的高度 3.1 求二叉树结点数 3.2 求二叉树叶子结点 3.3 求二叉树第k层结点的个数 …...
sysbench压测pgsql数据库 —— 筑梦之路
这里主要使用sysbench工具对Pgsql数据库进行基准测试。 1. 创建数据库和用户名 # 创建用户和数据库CREATE USER sysbench WITH PASSWORD 123456;CREATE DATABASE sysbench owner sysbench;# 给用户授权访问 vim pg_hba.confhost sysbench sysbench 127…...
超级详细Spring AI运用Ollama大模型
大模型工具Ollama 官网:https://ollama.com/ Ollama是一个用于部署和运行各种开源大模型的工具; 它能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。用户通过执行几条命令就能在本地运行开源大模型,如Lama 2等; 综上&#x…...
CF934B A Prosperous Lot
算法:贪心 rating : 1200 思路: 题目要求输出的数不能超过10^18; 10^18共有19位,那么不超过范围的前提下最多能输出几个环呢? 环最多为2个,也就是数字8,不超过数据范围的情况下能输出18个8…...
四步彻底卸载IDEA!!!
各位看官早安午安晚安呀 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 大家好,我们今天来学习四步彻底卸载IDEA!!! 首先我要提醒各位 如果你想删除 IDEA 相关…...
基于Spring Boot的健康医院门诊在线挂号系统设与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
快速搭建SOCKS5代理服务器教程(一键多ip脚本)
文章目录 前言环境要求一、先看效果二、使用一键脚本总结 前言 华为云服务器一键搭建一拖10 或者20 ip 脚本 环境要求 操作系统:CentOS 7.8服务器:建议至少1核1G配置云服务器 可多ip 搭建一键输出 一、先看效果 二、使用一键脚本 yum install -y wge…...
鸿蒙ArkTS页面如何与H5页面交互?
鸿蒙页面如何与H5页面交互? 先看效果前言通信功能介绍Web组件使用问题 Harmony OS NEXT版本(接口及解决方案兼容API12版本或以上版本) 先看效果 功能介绍 点击Click Me按钮可以接收展示鸿蒙传递给html的内容点击霓虹灯按钮可以同步更新底部鸿蒙页面的按…...
深度解析SmartGBD助力Android音视频数据接入GB28181平台
在当今数字化时代,视频监控与音视频通信技术在各行各业的应用愈发广泛。GB28181协议作为中国国家标准,为视频监控设备的互联互通提供了规范,但在实际应用中,许多Android终端设备并不具备国标音视频能力,这限制了其在相…...
软件安全测评报告内容和作用简析,如何获取权威安全测评报告?
软件安全测评报告是对软件系统进行安全性评估后形成的一份详细文档。它通过对软件系统的设计、实现及运行环境等多个方面进行系统性分析,以识别潜在的安全风险和漏洞。该报告不仅包含漏洞的详细信息和修复建议,也是对软件开发者和管理者的重要决策支持工…...
leetcode 207. 课程表
题目如下 数据范围 做题之前先搞清楚一个概念:拓扑序列 即在一个简单图内找一个入度为0的节点, 删除这个节点并删去与之相连接的边并把这条边连接的节点入度减一(如果存在)。 如此循环往复直到图内不存在节点我们认为拓扑序列存在。 那么在本题中参与课程的要求…...
第4章 4.4 EF Core数据库迁移 Add-Migration UpDate-Database
4.4.1 数据库迁移原理 总结一下就是: 1. 数据库迁移命令的执行,其实就是生成在数据库执行的脚本代码(两个文件:数字_迁移名.cs 数字_迁移名.Designer.cs),用于对数据库进行定义和修饰。 2. 数据库迁移…...
PyEcharts 数据可视化:从入门到实战
一、PyEcharts 简介 PyEcharts 是基于百度开源可视化库 ECharts 的 Python 数据可视化工具,支持生成交互式的 HTML 格式图表。相较于 Matplotlib 等静态图表库,PyEcharts 具有以下优势: 丰富的图表类型(30)动态交互功…...
数仓搭建实操(传统数仓oracle):DWD数据明细层
数据处理思路 DWD层, 数据明细层>>数据清洗转换, 区分事实表,维度表 全是事实表,没有维度表>>不做处理 数据清洗>>数据类型varchar 变成varchar2, 日期格式统一(时间类型变成varchar2); 字符数据去空格 知识补充: varchar 存储定长字符类型 ; 存储的数据会…...
《Mycat核心技术》第17章:实现MySQL的读写分离
作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 星球项目地址:https://binghe.gitcode.host/md/zsxq/introduce.html 沉淀,…...
区块链(14):FISCO BCOS配置及使用控制台
1 获取控制台并回到fisco目录 cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh 2 拷贝控制台配置文件 若节点未采用默认端口,请将文件中的20200替换成节点对应的…...
react路由总结
目录 一、脚手架基础语法(16~17) 1.1、hello react 1.2、组件样式隔离(样式模块化) 1.3、react插件 二、React Router v5 2.1、react-router-dom相关API 2.1.1、内置组件 2.1.1.1、BrowserRouter 2.1.1.2、HashRouter 2.1.1.3、Route 2.1.1.4、Redirect 2.1.1.5、L…...
Python爬虫处理网页中的动态内容
文章目录 前言一、Python环境搭建1.Python安装2.选择Python开发环境 二、Python爬虫处理网页中的动态内容1. 使用 Selenium 库2. 使用 Pyppeteer 库3. 分析 API 请求 前言 在网页中,动态内容通常是指那些通过 JavaScript 在页面加载后动态生成或更新的内容…...
Lineageos 22.1(Android 15)Launcer简单调整初始化配置
一、前言 Launcer的初始化配置主要在如下的xml文件夹下,默认读取的5x5 这里我们把device_profiles调整一下,然后新建一个default_workspace_my.xml作为我们自己的配置就行。 二、配置 注意Lineageos 的Launcer是在lineageos/packages/apps/Trebuchet…...
计算机毕业设计SpringBoot+Vue.js教师工作量管理系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...