深入了解决策树---机器学习中的经典算法
引言
决策树(Decision Tree)是一种重要的机器学习模型,以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法,决策树不仅适用于小规模数据,也可作为复杂模型的基石(例如随机森林、梯度提升树)。本文深入探讨决策树的数学原理、构建方法及高级应用,并通过Python示例展示如何优化决策树的性能。
决策树的数学原理
决策树是一种递归的分治算法,其核心思想是通过最优分裂策略将数据划分为尽可能“纯”的子集。以下是决策树的构建逻辑背后的数学基础:
1. 信息增益(Information Gain)
信息增益衡量的是在某个特征的基础上划分数据集后,信息的不确定性减少的程度。定义如下:
-
数据集的熵(Entropy):
[
H(D) = - \sum_{i=1}^k P_i \log_2 P_i
]其中 ( P_i ) 是第 ( i ) 类的概率,( k ) 是类别数。
-
特征 ( A ) 对数据集 ( D ) 的信息增益:
[
IG(D, A) = H(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} H(D_v)
]信息增益选择值最大的特征进行分裂。
2. 基尼不纯度(Gini Impurity)
基尼不纯度衡量数据被随机分类的概率。其定义为:
[
Gini(D) = 1 - \sum_{i=1}^k P_i^2
]
特征分裂的目标是最小化加权后的基尼不纯度。
3. 均方误差(MSE, Mean Squared Error)
在回归任务中,常用均方误差作为划分标准。定义为:
[
MSE = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y})^2
]
4. 停止条件
树的递归分裂直到以下任一条件成立:
- 所有样本属于同一类别;
- 特征不足以进一步分裂;
- 达到预设的最大深度。
决策树的构建与优化
特征选择的重要性
特征选择直接影响决策树的表现。比如,多值特征可能产生偏差,使得决策树倾向选择该特征。为应对这种情况,可以引入以下技术:
- 特征权重调整:通过正则化约束高维特征对分裂的影响。
- 均衡分裂策略:避免决策树倾向于某些特征值较多的特征。
剪枝技术的深入剖析
剪枝是解决过拟合问题的关键措施,分为以下两种方法:
- 预剪枝:通过限制树的最大深度、最小样本分裂数等条件,避免树过度生长。
- 后剪枝:在生成完整的决策树后,通过验证集逐层剪去无贡献的节点,以优化模型的泛化能力。
剪枝的数学依据通常基于代价复杂度剪枝(Cost-Complexity Pruning),其目标是最小化以下损失函数:
[
C_\alpha(T) = R(T) + \alpha \cdot |T|
]
其中,( R(T) ) 表示树的误差,( |T| ) 表示树的叶子节点数量,( \alpha ) 是惩罚参数。
决策树与集成学习的结合
单一决策树在面对高维度数据和复杂任务时可能表现受限,集成学习方法通过结合多棵决策树显著提升模型性能:
-
随机森林(Random Forest):
- 随机森林是多个决策树的集成,采用袋装法(Bagging)构建。
- 每棵树在随机子集上训练,预测时取多数投票。
-
梯度提升树(Gradient Boosting Decision Tree,GBDT):
- GBDT通过迭代优化多个弱决策树的误差进行提升。
- 使用梯度信息调整每棵树的贡献,适用于复杂非线性关系。
-
XGBoost 和 LightGBM:
- 这些方法是GBDT的高效变种,提供了更强大的并行化能力和对大规模数据的支持。
高级Python实现与案例
以下代码展示了如何使用超参数调整和剪枝技术构建优化的决策树。
数据准备与分割
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd# 加载数据
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
决策树模型训练与评估
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score# 初始化模型
clf = DecisionTreeClassifier(random_state=42, max_depth=5, min_samples_split=10)
clf.fit(X_train, y_train)# 预测并评估
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
可视化
from sklearn.tree import plot_tree
import matplotlib.pyplot as pltplt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.title("优化后的决策树")
plt.show()
使用网格搜索优化超参数
from sklearn.model_selection import GridSearchCVparam_grid = {'max_depth': [3, 5, 7, None],'min_samples_split': [2, 5, 10],'min_samples_leaf': [1, 2, 4]
}grid_search = GridSearchCV(DecisionTreeClassifier(random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)best_clf = grid_search.best_estimator_
print("最佳参数:", grid_search.best_params_)
决策树的实际应用
- 医疗领域:通过决策树预测疾病风险,提高诊断效率。
- 金融行业:在信用评分和欺诈检测中的应用广泛。
- 电子商务:优化推荐系统和客户分类。
- 生产管理:通过决策树进行质量控制和生产优化。
引言
在机器学习领域,决策树(Decision Tree)是一种经典且基础的算法,以其直观性、易解释性和广泛的适用性,成为分类与回归任务中的常用工具。通过将数据分裂成多个决策路径,决策树以树状结构为核心,通过一系列判断条件生成最终的预测结果。本文将深入探讨决策树的原理、数学基础、构建方法、优缺点以及实际应用场景,并通过代码实例演示如何在实践中构建高效的决策树模型。
决策树的基本概念
决策树是一种监督学习模型,其核心思想是利用特征分裂来最大化目标变量的可分性。整个过程构建了一棵树结构,其中:
- 根节点:表示整体数据集。
- 内部节点:表示基于某个特征的分裂点。
- 叶子节点:表示最终的分类标签或回归预测值。
决策树的构建过程
- 特征选择:选择最优的特征进行数据分裂。
- 数据划分:按照选定特征的不同取值将数据划分成多个子集。
- 递归构建:对每个子集重复以上步骤,直到满足停止条件。
- 剪枝:通过预剪枝或后剪枝避免过拟合。
决策树的数学基础
1. 信息增益
信息增益衡量特征对分类结果的不确定性减少程度。公式如下:
[
IG(D, A) = H(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} H(D_v)
]
其中,( H(D) ) 是数据集的熵,表示信息的不确定性。
2. 基尼不纯度
用于衡量节点纯度的指标,公式为:
[
Gini(D) = 1 - \sum_{i=1}^k P_i^2
]
值越小,节点越纯。
3. 均方误差
在回归任务中,均方误差(MSE)用于选择分裂特征,其定义为:
[
MSE = \frac{1}{N} \sum_{i=1}^N (y_i - \hat{y})^2
]
4. 停止条件
- 达到最大深度。
- 数据量不足以继续分裂。
- 节点内数据完全一致。
决策树的优缺点
优点
- 可解释性强:易于直观展示决策过程。
- 无需特征工程:对数值型和类别型数据均可直接处理。
- 适应非线性关系:可处理复杂的非线性数据。
缺点
- 易过拟合:在噪声较大的数据集上容易生成过于复杂的模型。
- 不稳定性:对数据的微小变化敏感。
- 偏向多值特征:可能更倾向选择取值较多的特征。
决策树的构建与实现
以下以Python实现一个简单的决策树分类模型,使用鸢尾花数据集(Iris Dataset)作为示例。
1. 数据加载与准备
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd# 加载数据
iris = load_iris()
X, y = iris.data, iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
2. 构建决策树模型
from sklearn.tree import DecisionTreeClassifier# 初始化模型
clf = DecisionTreeClassifier(max_depth=3, random_state=42)
clf.fit(X_train, y_train)
3. 模型评估
from sklearn.metrics import accuracy_score# 预测
y_pred = clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率: {accuracy:.2f}")
4. 决策树可视化
from sklearn.tree import plot_tree
import matplotlib.pyplot as pltplt.figure(figsize=(12, 8))
plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.title("决策树可视化")
plt.show()
5. 优化与剪枝
# 创建剪枝后的决策树
clf_pruned = DecisionTreeClassifier(max_depth=2, min_samples_split=10, random_state=42)
clf_pruned.fit(X_train, y_train)# 可视化剪枝后的决策树
plt.figure(figsize=(12, 8))
plot_tree(clf_pruned, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.title("剪枝后的决策树")
plt.show()
决策树的高级应用
1. 随机森林与集成学习
决策树在单独使用时可能存在一定局限性,随机森林和梯度提升树通过集成多个决策树模型,显著提升了预测性能。
2. 信用风险评估
银行和金融机构常用决策树评估客户的信用风险,通过分析财务数据和信用记录,判断是否批准贷款。
3. 疾病诊断
在医疗领域,决策树能依据病人症状和检查结果预测疾病风险,为医生提供决策支持。
4. 推荐系统
通过分析用户的行为数据,决策树可实现精准的商品推荐,提升用户体验。
决策树的未来发展
随着机器学习的不断进步,决策树在以下方面有望进一步优化:
- 自动化参数调整:结合深度学习和强化学习,提高模型优化的自动化水平。
- 大规模数据处理:通过改进并行化算法,使决策树在大数据环境下高效运行。
- 结合深度模型:探索决策树与神经网络的混合模型,实现更强大的学习能力。
总结
作为机器学习的经典算法,决策树以其直观性和易用性在实际应用中占据重要地位。从分类到回归、从单一模型到集成学习,决策树展现了广阔的适用场景。通过结合剪枝、超参数优化和集成学习,决策树的性能得到了极大提升。未来,随着数据规模和计算能力的增长,决策树仍将是机器学习领域不可或缺的核心技术。
总结与展望
决策树是一种兼具可解释性和灵活性的机器学习模型,虽然在面对高维度和复杂数据时表现有限,但其作为集成学习的基础仍然是不可或缺的工具。未来,结合深度学习和自动化超参数调整的技术,将为决策树的应用提供更多可能性。
相关文章:
深入了解决策树---机器学习中的经典算法
引言 决策树(Decision Tree)是一种重要的机器学习模型,以直观的分层决策方式和简单高效的特点成为分类和回归任务中广泛应用的工具。作为解释性和透明性强的算法,决策树不仅适用于小规模数据,也可作为复杂模型的基石&…...
深度优先算法(DFS)和广度优先算法(BFS)
一、深度优先算法 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便…...
Linux进程信号
信号量 本质是一个计数器,用来表示系统资源中,资源数量多少的问题。 公共资源:能被多个进程同时访问的资源。 访问没有被保护的资源,可能会出现数据不一致问题。 让不同进程看到同一个资源的目的是想通信。 为了解决进程具有独立性无法 …...
东风破捉妖师横空出世
一.异动拉升实时监测 东风破就像是一个大盘监测平台,是现实版的捉妖师,一旦妖股横空出世,就会在东风破面前原形毕露。东风破AI算法逻辑是监测存在异动拉升的股票,实时分析上证,深证,创业和科创板的股票数据…...
初窥门径:React中的事件机制
React中的事件机制 什么是合成事件?使用合成事件的好处事件委托事件池 React事件执行顺序 什么是合成事件? 在React中,合成事件(Synthetic Events) 是一种跨浏览器的事件包装机制,旨在统一浏览器的事件处理…...
【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构
Android Studio 版本 Android Java MVP 模式 参考 模型层 model public class User {private String email;private String password;public User(String email, String password) {this.email = email;this.password = password;}public String getEmail() {return email;}…...
DroneCAN 最新开发进展,Andrew在Ardupilot开发者大会2024的演讲
本文是Andrew演讲的中文翻译,你可以直接观看视频了解演讲的全部内容,此演讲视频的中文版本已经发布在Ardupilot社区的Blog板块,你可以在 Arudpilot官网(https://ardupilot.org) 获取该视频: 你也可以直接通过Bilibili链…...
从 App Search 到 Elasticsearch — 挖掘搜索的未来
作者:来自 Elastic Nick Chow App Search 将在 9.0 版本中停用,但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为,激励开发人员创造更具活力、更直观、更引人入…...
如何给GitHub的开源项目贡献PR
🎯导读:本文详细介绍了如何向开源项目“代码随想录”贡献自己的题解。首先,需要Fork原项目的仓库至个人GitHub账户,然后解决克隆仓库时可能遇到的SSH密钥问题。接着,按照标准流程对本地仓库进行代码或文档的修改&#…...
架构-微服务-服务配置
文章目录 前言一、配置中心介绍1. 什么是配置中心2. 解决方案 二、Nacos Config入门三、Nacos Config深入1. 配置动态刷新2. 配置共享 四、nacos服务配置的核心概念 前言 服务配置--Nacos Config 微服务架构下关于配置文件的一些问题: 配置文件相对分散。在一个…...
鱼眼相机模型-MEI
参考文献: Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下: // 相机坐标系下的点投影到畸变图像// 输入:相机坐标系点坐标cam 输出: 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…...
设计模式——抽象工厂模式
定义与概念 抽象工厂模式是一种创建型设计模式。它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。简单来说,抽象工厂就像是一个工厂的抽象蓝图,这个蓝图定义了生产一组产品的方法,但具体怎么生产这些产…...
大语言模型(LLM)不平衡的内存使用问题;训练过程中 Transformer层1和Transformer层2的反向传播计算量差异
目录 大语言模型(LLM)不平衡的内存使用问题 一、不平衡的内存使用概述 二、不平衡的内存使用举例 嵌入层与Transformer层之间的内存差异: 不同Transformer层之间的内存差异: 输入数据对内存使用的影响: 三、不平衡的内存使用带来的问题 四、解决方案 大语言模型的…...
AI需求条目化全面升级!支持多格式需求,打破模板限制!
AI需求条目化全面升级!支持多格式需求,打破模板限制! 一、多格兼济 标准立成 1、功能揭秘 预览未来 平台需求板块的AI需求条目化功能迎来全面升级。它支持多种需求格式,不再受限于模板文件,能够一键自动快速且灵活地生…...
C#:时间与时间戳的转换
1、将 DateTime 转换为 Unix 时间戳(秒) public static long DateTimeToUnixTimestamp(DateTime dateTime) {// 定义UTC纪元时间DateTime epochStart new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);// 计算从UTC纪元时间到指定时间的总秒数Tim…...
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言
目录 C 语言实现 Python 实现 Java 实现 Js 实现 Ts 实现 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析:利用while语句,条件为输入的字符不为\n。 C 语言实现 #include <stdio.h>int mai…...
贪心-区间问题——acwing
题目一:最大不相交区间数量 908. 最大不相交区间数量 - AcWing题库 分析 跟区间选点一样。区间选点:贪心——acwing-CSDN博客 代码 #include<bits/stdc.h> using namespace std;const int N 1e510;struct Range {int l, r;// 重载函数bool op…...
OpenCV相机标定与3D重建(8)相机标定函数calibrateCamera()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 从校准图案的多个视图中找到相机的内参和外参参数. cv::calibrateCamera 是 OpenCV 中用于相机标定的一个非常重要的函数。它通过一系列已知的世…...
Maven 插件
为 Maven 插件配置环境变量通常涉及到设置 Java 环境变量以及 Maven 相关的环境变量。以下是一些基本步骤: 1. 设置 Java 环境变量 Maven 需要 Java 运行环境,因此您需要确保 Java 的环境变量已经正确设置。 - **JAVA_HOME**:指向您的 Java…...
【Java基础入门篇】一、变量、数据类型和运算符
Java基础入门篇 一、变量、数据类型和运算符 1.1 变量 计算机中的数据表示方式是:“二进制(0/1)”,但是同时也可以兼容其他进制,例如八进制、十进制、十六进制等。 Java变量的本质是:存储在固定空间的内容,变量名是…...
[论文阅读]Poisoning Retrieval Corpora by Injecting Adversarial Passages
Poisoning Retrieval Corpora by Injecting Adversarial Passages 通过注入对抗性文本对检索语料库进行中毒 http://arxiv.org/abs/2310.19156 EMNLP2023 文章的目标就是要让检索器检索的结果包含攻击者生成的对抗性文本,如果能够检索到,则认为攻击成…...
[Redis#10] scan | db_0 | redis_cli | RESP | C++-redis启动教程
目录 1. 渐进式遍历 1.2 常见指令 - scan 2. 数据库管理 3.redis 客户端 是否前面学习的这些 redis 命令,没有价值了呢? 4.RESP 自定义协议 为什么能编写出一个自定义的 Redis 客户端? RESP 协议 5.在 Ubuntu 下启用 C 操作 Redis …...
LCR 151.彩灯装饰记录III
题目 代码 class Solution { public List<List> levelOrder(TreeNode root) { if(root null){ return new ArrayList<>(); } Queue<TreeNode> queue new LinkedList<>();List<List<Integer>> res new ArrayList<>();int sum 1;…...
vue实现滚动条滑动到底部分页调取后端接口加载数据
一、案例效果 二、前提条件 接口返回数据 三、案例代码 子组件 const $emit defineEmits([cloneItem, updateList]);const props defineProps({rightList: {type: Array,},chartTableData: {type: Array as () > ChartListType[],},deleteChartInfo: {type: Object,}…...
Vscode连接服务器
在VS Code中连接服务器的主要步骤如下: 1.安装Remote-SSH插件:打开VS Code,进入插件市场搜索“Remote-SSH”并安装。安装完成后,VS Code的侧边栏会出现一个远程资源管理器的图标。 2.配置服务器信息:点击…...
工作中Linux 内核的链表算法的使用
在 Linux 内核中,链表是一个非常重要的数据结构,广泛用于各种场景,如任务调度、设备管理、进程管理等。Linux 内核提供了高效且灵活的链表实现,能够更好地管理系统中的数据和对象。我们将深入浅出地讲解 Linux 内核链表的实现原理、用法,并举例展示如何使用。 1. 链表基本…...
洛谷P1115
最大子段和 - 洛谷 最大子段和 题目描述 给出一个长度为 n的序列a,选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数,表示序列的长度n。 第二行有n个整数,第i个整数表示序列的第 i个数字 a_i。 输出格式 输出一行…...
USB Type-C一线通扩展屏:多场景应用,重塑高效办公与极致娱乐体验
在追求高效与便捷的时代,启明智显USB Type-C一线通扩展屏方案正以其独特的优势,成为众多职场人士、娱乐爱好者和游戏玩家的首选。这款扩展屏不仅具备卓越的性能和广泛的兼容性,更能在多个应用场景中发挥出其独特的价值。 USB2.0显卡ÿ…...
使用Native AOT发布C# dll 提供给C++调用
Native AOT,即提前本地编译(Ahead-Of-Time Compilation),是一种将托管代码(如 C#)编译为本机可执行文件的技术,无需在运行时进行任何代码生成。 (Native AOT 优缺点截图摘自张善友博…...
Excel中根据某列内容拆分为工作簿
简介:根据A列的内容进行筛选,将筛选出来的数据生成一个新的工作簿(可以放到指定文件夹下),且工作簿名为筛选内容。 举例: 将上面的内容使用VBA会在当前test1下生成5个工作簿,工作簿名分别为TEST1.xls TEST2.xls TEST3…...
网络安全体系与网络安全模型
4.1 网络安全体系概述 4.1.1 网络安全体系概述 一般面言,网络安全体系是网络安全保障系统的最高层概念抽象,是由各种网络安全单元按照一定的规则组成的,共同实现网络安全的目标。网络安全体系包括法律法规政策文件、安全策略、组织管理、技术…...
彻底理解quadtree四叉树、Octree八叉树 —— 点云的空间划分的标准做法
1.参考文章: (1)https://www.zhihu.com/question/25111128 这里面的第一个回答,有一幅图: 只要理解的四叉树的构建,对于八叉树的构建原理类比方法完全一样:对于二维平面内的随机分布的这些点&…...
Altium Designer脚本工具定制
原理图设计自动化 ➡️Altium原理图检查工具 ➡️元器件参数集导入导出 ➡️原理图符号自动创建 ➡️原理图高级查找 ➡️原理图库文档高级查找 ➡️原理图文档对比 ➡️原理图库文档对比 PCB设计自动化 ➡️各种各样的PCB线圈自动创建 ➡️PCB文档导出成SVG格式文档…...
容器化与容器编排(Containerization and Orchestration)
一、容器化与容器编排介绍 容器化技术(Containerization)是一种轻量级的虚拟化技术,它允许开发者将应用及其所有依赖打包到一个独立的、隔离的容器中。容器比传统虚拟机(VM)更加轻便、高效,可以跨平台部署,并且提供一致的运行环境。而容器编排(Container Orchestratio…...
娱乐API:快速生成藏头诗、藏尾诗和藏中诗
引言 诗歌是中国传统文化的重要组成部分,其中藏头诗、藏尾诗和藏中诗因其独特的形式而备受喜爱。为了满足广大文学爱好者的需求,我们推出了一款娱乐API,支持快速生成藏头诗、藏尾诗和藏中诗。本文将详细介绍该API的功能、使用方法以及如何将…...
基于Python制作一个简易UI界面
基于Python制作一个简易UI界面 目录 基于Python制作一个简易UI界面1 原理简介2 编写程序3 程序测试 1 原理简介 这里用到了Python自带的UI库tkinter。 tkinter 是 Python 的标准 GUI(图形用户界面)库,用于创建和管理图形界面。它提供了一个简…...
【视频】OpenCV:读写视频文件VideoCapture和VideoWriter
1、VideoCapture:获取视频 VideoCapture可以从摄像头或者视频文件(eg:mp4,avi)中获取视频数据。 1.1 打开视频 1)打开摄像头 cv::VideoCapture cap(0); 参数:0表示默认摄像头 2)打开视频文件 cv::VideoCapture cap("video.mp4");3)判断是否打开成功 …...
【Leecode】Leecode刷题之路第62天之不同路径
题目出处 62-不同路径-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 62-不同路径-官方解法 方法1:动态规划 思路: 代码示例:(Java&…...
HarmonyOS NEXT应用开发,关于useNormalizedOHMUrl选项的坑
起因是这样的:我这库打包发布出问题了,这个有遇到的吗? 源码里面就没有 request .d.ts,这打包后哪来个这文件?且漏掉了其他文件。 猫哥csdn.yyz_1987 为啥我打包的har里面,只有接口,没有具体实现呢&#x…...
基于SpringBoot实现的编程训练系统(代码+论文)
🎉博主介绍:Java领域优质创作者,阿里云博客专家,计算机毕设实战导师。专注Java项目实战、毕设定制/协助 📢主要服务内容:选题定题、开题报告、任务书、程序开发、项目定制、论文辅导 💖精彩专栏…...
Spring Cloud Stream实现数据流处理
1.什么是Spring Cloud Stream? Spring Cloud Stream的核心是Stream,准确来讲Spring Cloud Stream提供了一整套数据流走向(流向)的API, 它的最终目的是使我们不关心数据的流入和写出,而只关心对数据的业务处…...
DETR:End-to-End Object Detection with Transformers
【DETR 论文精读【论文精读】-哔哩哔哩】 https://b23.tv/Iy9k4O2 【DETR源码解读4-哔哩哔哩】 https://b23.tv/Qp1uH5v 摘要: 将目标检测看作一个集合预测的问题 任务:给定一张图片,预测一组框,每个框需要得到坐标信息和包含的…...
【C++/Qt 】使用QCustomplot类打造一款数学函数图像生成工具(支持latex公式渲染+Python连接AI大模型)
✨✨ Rqtz 个人主页 : 点击✨✨ 🌈Qt系列专栏:点击 软件介绍 基于Qt的开源项目QCustomplot类的一款在线的数学函数图像生成工具,涉及到了数学的latex公式渲染,如何将latex语法转换为Python的函数,和如何在Qt中使用QCustomplot类进…...
Hackathon靶机系列Hackathon2
扫描ip: 获得靶机的ip:192.168.108.134 扫描端口: 获得80端口,7223的ssh和一个ftp服务器服务器中存在两个文件: 先看ftp: 默认用户名为ftp: 下载两个文件: 和 打开flag1.txt: 获得…...
Mybatis 复习
1 什么是MyBatis MyBatis是一个优秀的持久层框架,它对JDBC操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、 结果集检索等JDBC繁杂的过程代码 。…...
BurpSuite安装教程(详细!!附带下载链接)
声明 学习内容来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致…...
Istio_05_Istio架构
Istio_05_Istio架构 ArchitectureControl PlanePilotCitadelGalley Data PlaneSidecarIstio-proxyPilot-agentMetadta Exchange Ambient Architecture 如: Istio的架构(控制面、数据面) Gateway: Istio数据面的出/入口网关 Gateway分为: Ingress-gateway、Egress-gateway外部访…...
R语言结构方程模型(SEM)在生态学领域中的应用
目录 专题一、R/Rstudio简介及入门 专题二、结构方程模型(SEM)介绍 专题三:R语言SEM分析入门:lavaan VS piecewiseSEM 专题四:SEM全局估计(lavaan)在生态学领域高阶应用 专题五࿱…...
node.js基础学习-fs模块-文件操作(六)
一、前言 fs模块是 Node.js 内置的文件系统(File System)模块,它提供了一系列用于与文件系统进行交互的方法。通过fs模块,可以对文件或目录进行读取、写入、删除、重命名、查询状态等操作,这使得 Node.js 能够很好地处…...
EXCEL截取某一列从第一个字符开始到特定字符结束的字符串到新的一列
使用EXCEL中的公式进行特定截取 假设列A是一组产品的编码,我们需要的数据是“-”之前的字段。 我们需要在B1单元格输入公式“LEFT(A1,SEARCH("-",A1)-1)”然后选中B1至B4单元格,按“CTRLD”向下填充,就可以得出其它几行“-”之前的…...