机器学习(11)——xgboost
文章目录
- 1. 算法背景和动机
- 1.1. 提升算法(Boosting)
- 1.2. XGBoost的改进动机
- 2. 算法基础
- 3. 核心创新
- 3.4 稀疏感知算法
- 4. 系统优化
- 4.1 列块(Column Block)
- 4.2 缓存感知访问
- 4.3 外存计算
- 5. 算法细节
- 5.1 树生长策略
- 5.2 特征重要性评估
- 5.3 自定义目标函数
- 6. 关键参数详解
- 6.1 通用参数
- 6.2 提升器参数
- 6.3 学习任务参数
- 7. 与LightGBM对比
- 8. 实践建议
- 9. 代码示例
- 10. 应用场景
- 11. 局限性
1. 算法背景和动机
1.1. 提升算法(Boosting)
- Boosting是一种集成学习方法,通过组合多个弱学习器来构建一个强学习器。弱学习器通常是简单的模型,如决策树桩(单层决策树)。在Boosting过程中,每一轮训练都会根据前一轮的模型表现来调整数据的权重,重点关注之前模型预测错误的样本。例如,在AdaBoost算法中,错误分类的样本会在下一轮中被赋予更高的权重,使得后续的弱学习器更加关注这些“难分类”的样本。
- XGBoost是基于梯度提升(Gradient Boosting)的算法。梯度提升的核心思想是通过逐步添加新的模型来拟合前一轮模型的残差(即实际值与预测值之间的差异)。例如,假设我们用一个简单的线性模型来预测房价,第一轮模型可能只能大致估计房价,那么残差就反映了模型预测的不足。在下一轮,新的模型会尝试拟合这些残差,从而逐步提高整体模型的预测精度。
1.2. XGBoost的改进动机
- 传统的梯度提升算法在处理大规模数据时存在一些问题,如训练速度慢、难以并行计算、对过拟合的控制不够精细等。XGBoost针对这些问题进行了优化。例如,在大规模数据集上训练时,XGBoost通过高效的树结构剪枝和并行计算机制,大大加快了训练速度。同时,它还引入了正则化项来防止过拟合,使得模型在复杂数据集上也能保持良好的泛化能力。
- XGBoost (eXtreme Gradient Boosting) 是一种高效的梯度提升决策树(GBDT)实现,由陈天奇于2016年提出。作为机器学习竞赛和工业界的标杆算法,XGBoost因其出色的性能、速度和可扩展性而广受欢迎。
2. 算法基础
- XGBoost属于集成学习中的Boosting方法,基于梯度提升框架,主要特点包括:
- 加法模型:通过迭代增加弱学习器来优化目标函数
- 前向分步算法:逐步构建模型,每步都减少损失函数
- 梯度提升:利用损失函数的负梯度作为残差的近似值
XGBoost的工作原理
- 梯度提升树(GBDT)基本概念:
- GBDT是一种集成学习方法,通过一系列的弱学习器(通常是决策树)进行训练,每一棵树都基于前一棵树的残差来进行学习。其目标是最小化损失函数,即通过逐步减小预测误差来提高模型精度。
- 提升方法:
- 在XGBoost中,每一轮迭代都会生成一棵新的决策树,目标是减少前一轮树的预测误差。每棵树的构建是基于前一轮树的残差(即真实值与预测值之间的差异),并且通过加权的方式合并这些树的预测结果。
- 损失函数:
- XGBoost通过最小化目标函数来训练模型。目标函数包含两部分:
- 训练误差:衡量模型对训练集的拟合程度,通常是均方误差(MSE)或对数损失。
- 正则化项:控制模型的复杂度,防止过拟合。XGBoost通过加入L1(Lasso)和L2(Ridge)正则化来约束模型的复杂度。
- XGBoost通过最小化目标函数来训练模型。目标函数包含两部分:
- 加法模型:
- XGBoost采用加法模型(Additive Model),即每一棵树的输出被加到之前树的输出上。每棵树的输出是对模型当前预测的修正。
- 学习过程:
- 初始化阶段:通过某种方式(如均值或其他简单模型)初始化预测值。
- 迭代阶段:每一轮迭代生成一棵新的决策树来对现有预测值进行修正,更新模型。
- 分裂节点的选择:
- 在每个节点的分裂过程中,XGBoost采用贪心算法选择最佳的分裂特征和阈值。选择分裂点时,XGBoost使用二阶泰勒展开来近似目标函数,以减少计算量并加速训练过程。
3. 核心创新
XGBoost相比传统的GBDT进行了许多优化
-
二阶导数优化:
- GBDT只使用一阶梯度来调整模型参数,而XGBoost使用了二阶梯度(即Hessian矩阵)来进行优化。这使得XGBoost在模型的训练过程中更加精确,能够更快地收敛。
-
正则化:
- XGBoost加入了L1和L2正则化项,能够有效避免过拟合。这对于处理复杂数据或高维数据尤其重要。
-
并行计算:
- XGBoost支持在训练过程中进行并行计算。它可以在训练集的特征空间内并行地构建树,极大地提高了训练效率。
-
剪枝(Pruning):
- XGBoost使用后剪枝(Post-Pruning)方式,而不是预剪枝(Pre-Pruning)。即在树的构建过程中先不进行剪枝,而是在树构建完成后,使用深度优先搜索(DFS)来剪去不重要的分支。这使得模型能够更加灵活并减少过拟合。
-
稀疏感知:
-
XGBoost能够自动处理稀疏数据(例如缺失值和稀疏特征)。它通过稀疏感知算法来有效利用稀疏矩阵进行训练,避免了传统算法中对稀疏数据的低效处理。
列抽样: -
XGBoost在每轮迭代中还支持列抽样(Column Subsampling)。类似于随机森林的特征选择方法,列抽样可以减少模型的方差,提高模型的泛化能力。
-
-
学习率:
- XGBoost引入了学习率(learning rate),即每棵树对最终结果的贡献程度。较低的学习率可以增加模型的稳定性,但需要更多的树来拟合数据。
3.4 稀疏感知算法
自动处理缺失值:
为每个节点学习默认方向(左或右)
缺失值自动被分到默认方向
无需额外预处理
4. 系统优化
4.1 列块(Column Block)
数据按列存储(CSR格式)
支持并行化特征排序
只需在建树前排序一次
4.2 缓存感知访问
为梯度统计设计缓存优化
非连续内存访问转为连续访问
特别适合大数据集
4.3 外存计算
数据太大时自动使用磁盘
分块加载到内存处理
支持分布式计算
5. 算法细节
5.1 树生长策略
采用level-wise(按层)生长:
同时分裂同一层的所有叶子
相比leaf-wise更平衡
可通过max_depth控制深度
5.2 特征重要性评估
提供多种重要性评估方式:
weight: 特征被用作分割点的次数
gain: 特征带来的平均增益
cover: 特征影响的样本数
5.3 自定义目标函数
支持用户自定义:
def custom_obj(preds, dtrain):labels = dtrain.get_label()grad = gradient(preds, labels)hess = hessian(preds, labels)return grad, hess
6. 关键参数详解
6.1 通用参数
booster
: gbtree(默认), gblinear或dartnthread
: 并行线程数verbosity
: 日志详细程度
6.2 提升器参数
eta
(learning_rate): 学习率(0.01-0.3)gamma
: 分裂所需最小损失减少(控制过拟合)max_depth
: 树的最大深度(3-10)min_child_weight
: 子节点所需最小样本权重和subsample
: 样本采样比例(0.5-1)colsample_bytree
: 特征采样比例(0.5-1)
6.3 学习任务参数
objective
: 目标函数(reg:squarederror, binary:logistic等)eval_metric
: 评估指标(rmse, mae, logloss等)seed
: 随机种子
7. 与LightGBM对比
特性 | XGBoost | LightGBM |
---|---|---|
树生长策略 | level-wise | leaf-wise |
特征处理 | 预排序算法 | 直方图算法 |
内存使用 | 较高 | 更低 |
训练速度 | 较慢 | 更快 |
类别特征处理 | 需要编码 | 原生支持 |
小数据集表现 | 通常更好 | 可能过拟合 |
并行方式 | 特征并行为主 | 特征+数据并行 |
8. 实践建议
-
参数调优顺序:
- 设置合理的
learning_rate
(0.1左右) - 调整
max_depth
和min_child_weight
- 调节
gamma
和subsample
- 最后调整正则化参数(
lambda
,alpha
)
- 设置合理的
-
早停法:
evals = [(dtrain, 'train'), (dtest, 'eval')] xgb.train(params, dtrain, num_round, evals, early_stopping_rounds=10)
-
类别特征处理:
- 使用独热编码(稀疏特征)
- 或使用目标编码/计数编码
-
不平衡数据:
- 设置
scale_pos_weight = negative_samples/positive_samples
- 或调整样本权重
sample_weight
参数
- 设置
9. 代码示例
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split# 加载数据
data = load_boston()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)# 转换为DMatrix格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)# 参数设置
params = {'objective': 'reg:squarederror','max_depth': 5,'learning_rate': 0.1,'subsample': 0.8,'colsample_bytree': 0.8,'eval_metric': 'rmse'
}# 训练模型
evals = [(dtrain, 'train'), (dtest, 'eval')]
model = xgb.train(params, dtrain, num_boost_round=100,evals=evals, early_stopping_rounds=10)# 预测
y_pred = model.predict(dtest)
10. 应用场景
XGBoost特别适合:
- 结构化数据问题
- 中小规模数据集(10万-百万样本)
- 需要高精度的预测任务
- 特征重要性分析需求
11. 局限性
- 对超参数比较敏感
- 大数据集上内存消耗较高
- 相比深度学习不擅长非结构化数据
- 模型解释性不如线性模型直观
相关文章:
机器学习(11)——xgboost
文章目录 1. 算法背景和动机1.1. 提升算法(Boosting)1.2. XGBoost的改进动机2. 算法基础 3. 核心创新3.4 稀疏感知算法 4. 系统优化4.1 列块(Column Block)4.2 缓存感知访问4.3 外存计算 5. 算法细节5.1 树生长策略5.2 特征重要性评估5.3 自定义目标函数…...
大语言模型上下文长度:发展历程、局限与技术突破
1. 引言:什么是上下文长度及其重要性 上下文长度(Context Length),也称为上下文窗口(Context Window),指的是大语言模型(LLM)在处理和生成文本时能够有效记忆和利用的信…...
ControlNet简洁
ControlNet 什么是ControlNet ControlNet是一种用于控制扩散模型生成结果的网络结构。该结构可以将边缘图,结构图等信息注入扩散模型,从而能够对生成结果进行更为精细的控制。 ControlNet是怎么实现的 在模型结构方面,其大致结构如下图所…...
【C】C程序内存分配
文章目录 1. C程序内存布局 1. C程序内存布局 从低地址到高地址依次为: 代码段 存储内容:存放编译后的机器指令特点:代码段是只读的;可共享,多个进程可共享同一份代码 数据段 存储内容 已初始化的全局变量已初始化的静…...
论文学习:《引入TEC - LncMir,通过对RNA序列的深度学习来预测lncRNA - miRNA的相互作用》
长链非编码RNA ( long noncoding RNAs,lncRNAs )是一类长度通常大于200个核糖核苷酸的非编码RNA ,微小RNA ( microRNAs,miRNAs )是一类由22个核糖核苷酸组成的短链非编码RNA。近年来,越来越多的研究表明,lncRNA和miRNA…...
【每日一题丨2025年5.12~5.18】排序相关题
个人主页:Guiat 归属专栏:每日一题 文章目录 1. 【5.12】P1068 [NOIP 2009 普及组] 分数线划定2. 【5.13】P5143 攀爬者3. 【5.14】P12366 [蓝桥杯 2022 省 Python B] 数位排序4. 【5.15】P10901 [蓝桥杯 2024 省 C] 封闭图形个数5.【5.16】P12165 [蓝桥…...
AIDA64 extreme7.5 版本注册激活方法
一、AIDA 7.5 序列号 3BQN1-FUYD6-4GDT1-MDPUY-TLCT7 UVLNY-K3PDB-6IDJ6-CD8LY-NMVZM 4PIID-N3HDB-IWDJI-6DMWY-9EZVU 二、安装激活方法 激活步骤: 1、打开AIDA64软件,点击顶部菜单栏的“帮助”→“输入序列号” 2、将生成的序列号粘贴至输入框&a…...
Python 条件语句详解
条件语句是编程中用于控制程序流程的基本结构,Python 提供了几种条件语句来实现不同的逻辑判断。 1. if 语句 最基本的条件语句形式: if 条件:# 条件为真时执行的代码块示例: age 18 if age > 18:print("你已经成年了")2. …...
模型评估与调优(PyTorch)
文章目录 模型评估方法混淆矩阵混淆矩阵中的指标ROC曲线(受试者工作特征)AUCR平方残差均方误差(MSE)均方根误差(RMSE)平均绝对误差(MAE) 模型调优方法交叉验证(CV&#x…...
oppo手机安装APK失败报错:安装包异常
如果你的apk文件在oppo手机安装失败了,像这样: 先说我们当时解决方式: 如果还没上架应用市场的测试包,在上面图一中需要关闭“超级守护”,类似华为的纯净模式。如果开启了还还不行,安装页面的报错太笼统不…...
互联网大厂Java面试场景:从缓存到容器化的技术问答
场景:互联网大厂Java面试之旅 面试官:严肃的技术专家 应聘者:搞笑的水货程序员明哥 第一轮:缓存技术与数据库优化 面试官:明哥,你能谈谈Redis的常见使用场景和一些优化技巧吗? 明哥…...
【android bluetooth 协议分析 01】【HCI 层介绍 6】【WriteLeHostSupport命令介绍】
HCI 指令 HCI_Write_LE_Host_Support 是 Bluetooth Host 向 Controller 发送的一条指令,用于启用或禁用主机对 Bluetooth Low Energy(LE)的支持能力。该指令属于 HCI(Host Controller Interface)命令集合中,…...
Helm配置之为特定Deployment配置特定Docker仓库(覆盖全局配置)
文章目录 Helm配置之为特定Deployment配置特定Docker仓库(覆盖全局配置)需求方法1:使用Helm覆盖值方法2: 在Lens中临时修改Deployment配置步骤 1: 创建 Docker Registry Secret步骤 2: 在 Deployment 中引用 Secret参考资料Helm配置之为特定Deployment配置特定Docker仓库(覆…...
项目:在线音乐播放服务器——基于SSM框架和mybatis
介绍项目 项目主要是基于SSM框架和mybatis进行实现 主要的功能: 登陆界面,用户注册,音乐的播放列表,删除指定的歌曲,批量删除指定的歌曲,收藏歌曲,查询歌曲,从收藏列表中删除收藏…...
Linux配置vimplus
配置vimplus CentOS的配置方案很简单,但是Ubuntu的解决方案网上也很多但是有效的很少,尤其是22和24的解决方案,在此我整理了一下我遇到的问题解决方法 CentOS7 一键配置VimForCPP 基本上不会有什么特别难解决的报错 sudo yum install vims…...
Ubuntu22.04开机运行程序
新建启动文件 sudo vim /etc/systemd/system/trojan.service 2. 写入配置文件 [Unit] DescriptionTrojan Proxy Service Afternetwork.target[Service] Typesimple ExecStart/home/cui/Downloads/trojan/trojan -c /home/cui/Downloads/trojan/config.json Restarton-failur…...
高效查询:位图、B+树
1. 位图(BitMap)与布隆过滤器(Bloom Filter) 1.1. 问题背景与解决方案 问题背景 场景:网页爬虫判重 搜索引擎的爬虫会不断地解析网页中的链接并继续爬取。一个网页可能在多个页面中出现,容易重复爬取。…...
HashMap的扩容机制
在添加元素或初始化的时候需要调用resize方法进行扩容,第一次添加数据初始化数组长度为16,以后每次每次扩容都是达到了扩容阈值(数组长度 * 0.75) 每次扩容的时候,都是扩容之前容量的2倍; 扩容之后&#…...
从坏道扫描到错误修复:HD Tune实战指南
一、硬盘检测的必要性 随着计算机使用时间的增加,机械硬盘和固态硬盘都会出现不同程度的性能衰减。定期进行硬盘健康检查可以:及时发现潜在故障;预防数据丢失风险;掌握存储设备实际状态。 二、HD Tune功能解析 性能测试&#x…...
Leetcode 3553. Minimum Weighted Subgraph With the Required Paths II
Leetcode 3553. Minimum Weighted Subgraph With the Required Paths II 1. 解题思路2. 代码实现 题目链接:3553. Minimum Weighted Subgraph With the Required Paths II 1. 解题思路 这一题很惭愧,并没有自力搞定,是看了大佬们的解答才有…...
算法加训之最短路 上(dijkstra算法)
目录 P4779 【模板】单源最短路径(标准版)(洛谷) 思路 743. 网络延迟时间(力扣) 思路 1514.概率最大路径(力扣) 思路 1631.最小体力消耗路径 思路 1976. 到达目的地的方案数 …...
01 Nginx安装及基本配置
01 Nginx安装 # 官网:https://nginx.org/en/ # 点击下载图1 Nginx下载官网 # https://nginx.org/en/download.html # 全是各个平台的源码包图2 Nginx下载版本 # 找到最下面的stable and mainline(稳定版和主线版)图3 找到最下面的稳定版 # https://nginx.org/en/li…...
ABP vNext 多租户系统实现登录页自定义 Logo 的最佳实践
🚀 ABP vNext 多租户系统实现登录页自定义 Logo 的最佳实践 🧭 版本信息与运行环境 ABP Framework:v8.1.5.NET SDK:8.0数据库:PostgreSQL(支持 SQLServer、MySQL 等)BLOB 存储:本地…...
Docker 网络
目录 前言 1. Docker 网络模式 2. 默认 bridge 网络详解 (1)特点 (2)操作示例 3. host 网络模式 (1)特点 (2)操作示例 4. overlay…...
btc交易所关键需求区 XBIT反弹与上涨潜力分析
在加密货币市场的浪潮中,狗狗币(DOGE)近期的走势吸引了众多投资者的目光。根据XBIT分析,狗狗币刚刚踏入关键需求区,此前虽从高点大幅下跌了10%,但XBIT去中心化交易所平台分析师认为,短期内它有望…...
深度剖析:YOLOv8融入UNetv2 SDI模块的性能提升之旅
文章目录 一、引言二、SDI多层次特征融合模块概述(一)背景和动机(二)模块设计原理 三、SDI模块实现(一)关键代码结构(二)代码解析 四、将SDI模块融入YOLOv8(一࿰…...
图像定制大一统?字节提出DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,有效解决多泛化性冲突。
字节提出了一个统一的图像定制框架DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,不仅在广泛的图像定制场景中取得了高质量的结果,而且在适应多条件场景方面也表现出很强的灵活性。现在已经可以支持消费级 GPU(16G…...
spark数据处理练习题详解【下】
12. (单选题) def main(args: Array[String]): Unit { println(func1("张三",f1)) } def func1(name:String,fp:(________________)): String { fp(name) } def f1(s:String): String { "welcome "s } 选择填空() A.String>S…...
Vue基础(11)_条件渲染
原生css想让显示的元素隐藏,方式有以下几点: display: none; opacity: 0; visibility: hidden; 那么vue中是怎样实现元素显示/隐藏的呢? 条件渲染 v-show 写法:v-show"表达式" 判断:表达式转换为布尔值(tr…...
湖北理元理律师事务所:债务优化服务的四维创新实践
在债务问题普遍影响家庭经济稳定的当下,专业法律服务机构的价值不仅在于提供解决方案,更需构建可持续的服务生态。湖北理元理律师事务所通过“法律心理技术教育”四维服务体系,探索出一条兼顾债务化解与生活质量保障的创新路径。 服务模式创…...
ubuntu工控机固定设备usb串口号
ubuntu工控机固定设备usb串口号 1、多个USB设备的ID相同 ubuntu系统中的串口使用权限并没有对所有的用户进行开放,所以在使用代码对串口进行操作时,需要打开用户对串口的使用权限,否则在代码中会出现“串口无法打开的报错”,只有…...
MongoDB的安装及简单使用
MongoDB 是一个开源的文档型 NoSQL 数据库,由 MongoDB Inc. 开发,专为灵活性和可扩展性设计。 特点: 1.文档模型:数据以 BSON(二进制 JSON)格式存储,支持嵌套结构。 2.动态 S…...
卷积神经网络进阶:转置卷积与棋盘效应详解
【内容摘要】 本文深入解析卷积神经网络中的转置卷积(反卷积)技术,重点阐述标准卷积与转置卷积的计算过程、转置卷积的上采样作用,以及其常见问题——棋盘效应的产生原因与解决方法,为图像分割、超分辨率等任务提供理论…...
Linux进程信号(三)之信号产生2
文章目录 4. 由软件条件产生信号5. 硬件异常产生信号模拟一下除0错误和野指针异常除0错误野指针错误 总结思考一下 4. 由软件条件产生信号 SIGPIPE是一种由软件条件产生的信号,在“管道”中已经介绍过了。 软件条件不就绪,很明显这个软件条件没有直接报错ÿ…...
【AWS入门】Amazon SageMaker简介
【AWS入门】Amazon SageMaker简介 [AWS Essentials] Brief Introduction to Amazon SageMaker By JacksonML 机器学习(Machine Learning,简称ML) 是当代流行的计算机科学分支技术。通常,人们在本地部署搭建环境,以满足机器学习的要求。 AWS…...
MySQL--day2--基本的select语句
(以下内容全部来自上述课程) SQL概述 结构化查询语句 1. SQL分类 DDL:数据定义(definition)语言:create、drop、alter… DML:数据操作(manipulation)语言ÿ…...
程序代码篇---python获取http界面上按钮或者数据输入
文章目录 前言 前言 本文简单接受了python获取http界面上按钮或者数据输入...
网络安全利器:蜜罐技术详解
蜜罐是网络安全领域中一种主动防御和情报收集的重要工具。本文将深入探讨蜜罐技术的原理、类型、应用场景以及部署注意事项。 1. 什么是蜜罐? 蜜罐(Honeypot)是一种安全资源,其价值在于被探测、攻击或未经授权使用。简单来说,蜜罐就是一个诱饵系统,用来吸引黑客的注意力…...
回溯实战篇3
文章目录 前言排列全排列全排列II 棋盘问题N皇后解数独 其他递增子序列重新安排行程 前言 今天继续带大家进行回溯的实战篇3,去学习如何用回溯的方法去解决排列和棋盘以及其他用回溯方法解决的问题,最重要的就是学会回溯三部曲的构建,一文带…...
Spark 基础自定义分区器
(一)什么是分区 【复习提问:RDD的定义是什么?】 在 Spark 里,弹性分布式数据集(RDD)是核心的数据抽象,它是不可变的、可分区的、里面的元素并行计算的集合。 在 Spark 中…...
【提高+/省选−】洛谷P1495 —— 【模板】中国剩余定理(CRT)/ 曹冲养猪
见:P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪 - 洛谷 题目描述 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎&a…...
系统架构设计师考前冲刺笔记-第1章-系统工程与信息系统基础
文章目录 第1章 系统工程与信息系统基础大纲13 DSS5678 BSP910 SCM11 OLAP12 OLAP14 BRP15 集成16 企业门户19 边缘计算 第1章 系统工程与信息系统基础 大纲 1 3 DSS DSS 决策支持系统 Decision Support System 5 6 7 8 BSP 9 10 SCM 注意:生产计划 11 OLAP O…...
Vue环境下数据导出Excel的全面指南
文章目录 1. 前言2. 原生JavaScript实现方案2.1 使用Blob对象和URL.createObjectURL2.2 使用Base64编码实现 3. 常用第三方库方案3.1 使用SheetJS (xlsx)3.2 使用ExcelJS3.3 使用vue-json-excel 4. 服务器端导出方案4.1 前端请求服务器生成Excel4.2 使用Web Worker处理大数据导…...
Linux下 使用 SSH 完成 Git 绑定 GitHub
文章目录 1、检查 SSH2、生成 SSH key3、添加 SSH key4、验证绑定是否成功 1、检查 SSH Git Bash 中输入ssh命令,查看本机是否安装 SSH: 2、生成 SSH key (1)输入 ssh-keygen -t rsa 命令,表示我们指定 RSA 算法生…...
Jsoup库和Apache HttpClient库有什么区别?
Jsoup 和 Apache HttpClient 是两个功能不同的库,它们在 Java 开发中被广泛使用,但用途和功能有明显的区别: Jsoup 用途:Jsoup 是一个用于解析 HTML 文档的库。它提供了非常方便的方法来抓取和解析网页内容,提取和操作…...
安全漏洞频发,如何加强防护措施?
当系统安全漏洞频发时,应从代码安全审查、自动化漏洞扫描、权限控制与访问管理、员工安全意识培训等四个关键维度加强防护。其中,代码安全审查是防止漏洞渗透的第一道防线。企业应将代码安全审查纳入CI/CD流程,实施静态代码分析和依赖包检查机…...
Text models —— BERT,RoBERTa, BERTweet,LLama
BERT 什么是BERT? BERT,全称Bidirectional Encoder Representations from Transformers,BERT是基于Transformer的Encoder(编码器)结构得来的,因此核心与Transformer一致,都是注意力机制。这种…...
CodeBuddy初探
回顾Trae 上一篇博客Trae IDE和VSCode Trae插件初探-CSDN博客,我们进行了TraeIDE和Trae插件初探,给了Trae这样一个任务: 生成一个to do list清单web页面,采用vue实现,可以在页面上进行todolist进行增删改查。 Trae的…...
spark数据处理练习题详解【上】
1. (单选题) scala中属于序列的可变的集合,可以添加,删除元素的是() A.Array B.List C.Tuple D.ListBuffer 答案及解析:D 在Scala中,属于序列的可变集合,可以添加和删除元素的是ÿ…...
sparkSQL读入csv文件写入mysql(2)
(二)创建数据库和表 接下来,我们去创建一个新的数据库,数据表,并插入一条数据。 -- 创建数据库 CREATE DATABASE spark; -- 使用数据库 USE spark;-- 创建表 create table person(id int, name char(20), age int);-- …...