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

线性回归之归一化(normalization)

文章目录

  • 归一化与梯度下降
  • 归一化的必要性:从特征量纲到梯度下降
    • 问题背景
    • 矛盾与低效
    • 归一化的作用
  • 归一化提高模型精度的原因
  • 归一化的本质
  • 常见归一化方法
    • 最大值最小值归一化
      • 示例说明
      • 优缺点分析
    • 标准归一化
      • 具体机制
      • 示例说明
  • 强调

归一化与梯度下降

在这里插入图片描述

  • 归一化与梯度下降 :在多元线性回归中,损失函数(MSE)是凸函数,可类比为碗状曲面。梯度下降的目标是找到碗底(损失最小点)。

可视化说明

  • 左图:归一化后的损失函数(等高线均匀,利于梯度下降)

  • 右图:未归一化的损失函数(等高线狭长,收敛困难)
    在这里插入图片描述

  • 关键结论:归一化能优化损失函数的几何形态,使梯度下降更高效。


归一化的必要性:从特征量纲到梯度下降

问题背景

假设我们有两个特征:

  • 年龄(X₁):数值较小(如 25、36、49)
  • 收入(X₂):数值较大(如 10,000、50,000、30,000)
nameageincome
张三2510000
李四3650000
王五4930000
  • 在多元线性回归中,模型方程为: y = θ 1 X 1 + θ 2 X 2 y = \theta_1 X_1 + \theta_2 X_2 y=θ1X1+θ2X2

计算机无法理解特征的物理含义,仅视作数值计算。若未归一化:

  1. 初始参数(θ₁, θ₂):通常随机初始化,数值相近(如 ~0.01)。
  2. 特征量级差异:由于 X 2 ≫ X 1 X_2 \gg X_1 X2X1,梯度更新时:
    • 梯度公式 ∇ θ j = ( h θ ( X ) − y ) X j \nabla_{\theta_j} = (h_\theta(X)-y)X_j θj=(hθ(X)y)Xj ∇ θ 2 ≫ ∇ θ 1 \nabla_{\theta_2} \gg \nabla_{\theta_1} θ2θ1
    • 参数更新幅度: Δ θ 2 ≫ Δ θ 1 \Delta \theta_2 \gg \Delta \theta_1 Δθ2Δθ1

矛盾与低效

  1. 收敛速度不一致
    • θ 2 \theta_2 θ2 因梯度大,快速收敛;
    • θ 1 \theta_1 θ1因梯度小,收敛缓慢,拖慢整体优化。
  2. 优化路径曲折:如右图所示,梯度下降会先沿 θ 2 \theta_2 θ2 轴快速下降,再缓慢调整 θ 1 \theta_1 θ1,形成“之字形”路径。
    在这里插入图片描述

归一化的作用

通过归一化(如 Z-score),使所有特征处于相近量级(如 μ=0, σ=1),从而:

  • 梯度均衡化:各维度参数的更新幅度相近。
  • 同步收敛:避免部分参数等待,提升优化效率。
  • 类比说明未归一化(如“部分人先富”,导致优化不均衡);归一化(如“共同富裕”,所有参数同步优化,步伐一致)。

归一化提高模型精度的原因

  1. 保证距离计算的合理性
  • 问题:在KNN等依赖距离的算法中,若某一特征数值过大(如收入 X 1 = 10 , 000 20 , 000 X₁=10,000~20,000 X1=10,000 20,000),而另一特征过小(如年龄 X 2 = 1 2 X₂=1~2 X2=1 2),距离计算会被大数值特征主导,导致结果失真。
  • 解决:归一化后,所有特征处于相近范围(如0~1),模型能更合理地综合各维度信息。
  1. 避免分类失效
  • 问题:若特征量纲差异极大(如X₁范围 1 万  2 万 1万~2万 1 2,X₂范围 1 2 1~2 1 2),数据点可能近似分布在一条直线上,导致分类器(如SVM、逻辑回归)无法找到有效的分界超平面。
  • 解决:归一化消除量纲影响,使分类边界更准确。
    在这里插入图片描述

归一化的本质

  • 归一化作用:将所有特征统一到相同数量级,实现“无量纲化”,使模型能公平对待每个特征。
  • 归一化通过数学变换消除特征间的量纲差异,是数据预处理中的“公平调节器”。

常见归一化方法

最大值最小值归一化

对每个特征 X i X_i Xi进行数学变换,常见方法包括:

  • Min-Max归一化:压缩到 [0, 1] 区间
    X i , j ∗ = X i , j − X j m i n X j m a x − X j m i n X_{i,j}^* = \frac{X_{i,j} - X_{j}^{min}}{X_{j}^{max} - X_{j}^{min}} Xi,j=XjmaxXjminXi,jXjmin
    • x j m i n x_{j}^{min} xjmin是对应X矩阵中第 j j j列特征值的最小值
    • x j m a x x_{j}^{max} xjmax是对应 X X X矩阵中第 j j j列特征值的最大值
    • x i , j x_{i,j} xi,j是X矩阵中第 i i i行第 j j j列的数值
    • X i , j ∗ X_{i,j}^* Xi,j是归一化之后的 X X X矩阵中第 i i i行第 j j j列的数值

示例说明

正常数据归一化

  • 原始数据:[1, 2, 3, 5, 5]
  • 计算参数:
    • 最小值 x j m i n = 1 x_j^{min}=1 xjmin=1
    • 最大值 x j m a x = 5 x_j^{max}=5 xjmax=5
  • 归一化结果:[0, 0.25, 0.5, 1, 1]
from sklearn.preprocessing import MinMaxScaler
import numpy as npdata = np.array([[1], [2], [3], [5], [5]])  # 注意需要二维数组
scaler = MinMaxScaler()
normalized = scaler.fit_transform(data)
print(normalized.flatten())  # 输出: [0.   0.25 0.5  1.   1.  ]

含离群值数据归一化

  • 原始数据:[1, 2, 3, 5, 50001]
  • 归一化结果:[0, 0.00002, 0.00004, 0.00008, 1]
from sklearn.preprocessing import MinMaxScaler
import numpy as np
outlier_data = np.array([[1], [2], [3], [5], [50001]])
scaler = MinMaxScaler()
outlier_normalized = scaler.fit_transform(outlier_data)
print(outlier_normalized.flatten())  # 输出: [0.     0.00002 0.00004 0.00008 1.     ]

优缺点分析

特性说明
优点保证所有数值严格落在[0,1]区间
缺点对离群值敏感,会导致正常数据分布失衡

标准归一化

  • 标准归一化通常包含均值归一化和方差归一化。。经过处理的数据符合标准正态分
    布,即均值为0,标准差为1。
    X n e w = X i − 1 n ∑ i = 1 k f i x i 1 n ∑ i = 1 k f i ( x i − μ ) 2 X_{new}=\frac{X_i- \frac{1}{n}\sum_{i=1}^{k} f_i x_i}{\sqrt{\frac{1}{n}\sum_{i=1}^{k} f_i (x_i - \mu)^2} } Xnew=n1i=1kfi(xiμ)2 Xin1i=1kfixi

X new = X i − μ σ X_{\text{new}} = \frac{X_i - \mu}{\sigma} Xnew=σXiμ

将原始数据转换为均值为0、标准差为1的标准正态分布

均值计算(μ):
μ = 1 n ∑ i = 1 k f i x i \mu = \frac{1}{n}\sum_{i=1}^{k} f_i x_i μ=n1i=1kfixi

方差计算(σ²):
σ 2 = 1 n ∑ i = 1 k f i ( x i − μ ) 2 \sigma^2 = \frac{1}{n}\sum_{i=1}^{k} f_i (x_i - \mu)^2 σ2=n1i=1kfi(xiμ)2

标准差计算(σ):
σ = σ 2 = 1 n ∑ i = 1 k f i ( x i − μ ) 2 \sigma = \sqrt{\sigma^2} =\sqrt{\frac{1}{n}\sum_{i=1}^{k} f_i (x_i - \mu)^2} σ=σ2 =n1i=1kfi(xiμ)2

  • 除以方差的好处:标准归一化是除以的是标准差,而标准差的计算会考虑到所有样本数据,所以受到离群值的影响会小一些。但使用标准归一化不一定会把数据缩放到0到1之间。
  • 标准归一化减去均值的原因:减去均值(均值归一化)使数据分布中心移至原点(μ=0),打破特征同符号限制,为梯度下降提供更灵活的优化路径。 减去均值不仅使数据符合标准正态分布,更通过引入特征符号多样性,解决梯度下降的方向耦合问题,提升优化效率。

具体机制

  1. 问题根源
    • 若特征均为正数(如年龄、收入),梯度公式中的 X j X_j Xj 始终为正,导致参数更新方向被锁定:
      Δ w j = − α ⋅ ( h w ( X ) − y ) ⋅ X j \Delta w_j = -\alpha \cdot (h_w(X)-y) \cdot X_j Δwj=α(hw(X)y)Xj
  • 当所有 X j > 0 X_j > 0 Xj>0时,梯度方向仅由残差 ( h w ( X ) − y ) (h_w(X)-y) (hw(X)y)决定,所有 ( w_j ) 更新方向一致(同时增或减),无法高效逼近最优解。
  1. 均值归一化的改进
    • 通过 X new = X − μ σ X_{\text{new}} = \frac{X - \mu}{\sigma} Xnew=σXμ,特征值围绕0对称分布(有正有负)。
    • 梯度方向多样化:不同样本的 X j X_j Xj可能为正或负,使 w j w_j wj更新方向可独立变化(如 w 1 w_1 w1增、 w 2 w_2 w2 减),优化路径更接近直线(如蓝色最优路径),加速收敛。
      在这里插入图片描述

示例说明

  • 原始数据:年龄( 25 50 25~50 25 50,全正数),收入( 10 , 000 50 , 000 10,000~50,000 10,000 50,000,全正数)。
  • 归一化后:年龄( − 1.2 1.5 -1.2~1.5 1.2 1.5,有正负),收入( − 0.8 1.3 -0.8~1.3 0.8 1.3,有正负)。
  • 梯度更新时, X j X_j Xj符号差异允许 w 1 w_1 w1 w 2 w_2 w2 反向调整,避免“之字形”路径。
pip install scikit-learn
from sklearn.preprocessing import StandardScaler# 创建一个二维列表,表示原始数据
data = [[1], [2], [3], [4], [5]]# 初始化 StandardScaler 对象
# StandardScaler 是 scikit-learn 提供的一个工具,用于对数据进行标准化处理。
# 标准化是指将数据转换为均值为 0、标准差为 1 的分布,公式为:z = (x - μ) / σ
# 其中,μ 是数据的均值,σ 是数据的标准差。
scaler = StandardScaler()# 使用 fit 方法拟合数据
# fit 方法会计算数据的均值(mean_)和方差(var_),并存储在 scaler 对象中。
print(scaler.fit(data))# 打印数据的均值
# mean_ 是 scaler 对象的一个属性,表示数据的均值。
print(scaler.mean_)# 打印数据的方差
# var_ 是 scaler 对象的一个属性,表示数据的方差。
print(scaler.var_)# 使用 transform 方法对数据进行标准化
# transform 方法会根据 fit 方法计算出的均值和方差,将数据转换为标准正态分布。
print(scaler.transform(data))
# 执行结果
'''
[3.]
[2.]
[[-1.41421356][-0.70710678][ 0.        ][ 0.70710678][ 1.41421356]]
'''

强调

  • 特征工程,很多时候如果对训练集的数据进行预处理,比如这里讲的归一化,那么未来对测试集和模型上线来新的数据的时候,都要进行相同的数据预处理流程,而且所使用的均值和方差是来自当时训练集的均值和方差!因为人工智能就是从训练集数据中找规律,然后利用找到的规律去预测未来。这也就是说假设训练集和测试集以及未来新来的数据是属于同分布的!

  • 从代码上面来说如何去使用训练集的均值和方差呢?如果是上面代码的话,就需要把scaler对象持久化,模型上线再加载进来对新来的数据使用。

  • 代码案例

from sklearn.preprocessing import StandardScaler
import joblib# 创建一个二维列表,表示原始数据
data = [[1], [2], [3], [4], [5]]# 初始化 StandardScaler 对象
# StandardScaler 是 scikit-learn 提供的一个工具,用于对数据进行标准化处理。
# 标准化是指将数据转换为均值为 0、标准差为 1 的分布,公式为:z = (x - μ) / σ
# 其中,μ 是数据的均值,σ 是数据的标准差。
scaler = StandardScaler()# 使用 fit 方法拟合数据
# fit 方法会计算数据的均值(mean_)和方差(var_),并存储在 scaler 对象中。
print(scaler.fit(data))# 打印数据的均值
# mean_ 是 scaler 对象的一个属性,表示数据的均值。
print(scaler.mean_)# 打印数据的方差
# var_ 是 scaler 对象的一个属性,表示数据的方差。
print(scaler.var_)# 使用 transform 方法对数据进行标准化
# transform 方法会根据 fit 方法计算出的均值和方差,将数据转换为标准正态分布。
print(scaler.transform(data))# 持久化 scaler 对象
joblib.dump(scaler, 'scaler.pkl')# 创建新的测试数据
new_data = [[6], [7], [8]]# 加载 scaler 对象
loaded_scaler = joblib.load('scaler.pkl')# 使用加载的 scaler 对象对新数据进行标准化
print(loaded_scaler.transform(new_data))

相关文章:

线性回归之归一化(normalization)

文章目录 归一化与梯度下降归一化的必要性:从特征量纲到梯度下降问题背景矛盾与低效归一化的作用 归一化提高模型精度的原因归一化的本质常见归一化方法最大值最小值归一化示例说明优缺点分析 标准归一化具体机制示例说明 强调 归一化与梯度下降 归一化与梯度下降 &…...

mac监控linux上mysql性能(Grafana+Prometheus+mysqld_exporter)

一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装(mac)-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录页面 (默认用户名和密码都为admin,进入后…...

【玩泰山派】MISC(杂项)- linux桌面环境

文章目录 linux桌面环境linux四大桌面环境概述ubuntu基于四大桌面环境的版本 显示管理器gdm3(GNOME Display Manager)lightdm(Lightweight Display Manager)SDDM(Simple Desktop Display Manager)KDM&#…...

MVCC介绍

MVCC(多版本并发控制)详解 MVCC(Multi-Version Concurrency Control) 是一种数据库并发控制技术,核心思想是通过维护数据的多个版本来实现读写操作的无锁并发,从而在高并发场景下提升性能。它广泛用于 MyS…...

神经网络与模型训练过程笔记

1.专有名词 ANN 人工神经网络,一种受生物神经元启发的监督学习算法。输入数据通过网络中的层级函数传递,激活特定神经元。函数复杂度越高,模型对数据的拟合能力越强,预测精度越高。 偏置项 其中x下表从1开始的是输入变量&#xf…...

ASP.NET 0~1学习

变量 string username Request["id"]; 声明并初始化一个字符串变量 username 数据类型 下面列出了常用的数据类型: 类型描述实例int整数(全数字)103, 12, 5168float浮点数3.14, 3.4e38decimal十进制数字(高精度&a…...

optool为macho文件增加动态库

对macho文件有一定理解后,了解下optool是如何给macho文件增加动态库等功能的 optool 源码 环境 macOS 13.4 (22F66) Xcode 14.3.1 0x0 编译 下载源码 $ git clone --recurse-submodules https://github.com/alexzielenski/optool.git修改下Deployment Target,比如改成11.0&…...

【C++】类和对象之日期类的实现(构造、运算符重载)

文章目录 一、日期类要实现的函数二、函数实现1、GetMonthDay获取对应月份的天数2、CheckDate检查日期3、Date构造函数4、Print打印日期5、运算符重载1. 、、-、-2. 前置/--、后置/--3. 两个日期类相减(求相差日期) 6、比较7、流插入、流提取&#xff0…...

【Rust 精进之路之第9篇-所有权·核心】规则与移动 (Move):Rust 内存安全基石详解

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:没有 GC,Rust 如何管好内存?答案是所有权! 在我们的 Rust 探索之旅中,我们已经学习了变量、数据类型、控制流、函数和强大的构建工具 Cargo。现在,我们将踏入 Rust 最…...

【任务调度】xxl-job入门

xxl- job 入门 附上笔者写的测视示例:chenmeng-test-demos/demo8-task/task-xxl-job at master cmty256/chenmeng-test-demos 官方文档 XXL-JOB官网 源码仓库地址: Github:https://github.com/xuxueli/xxl-job Gitee:http://g…...

Go语言--语法基础4--基本数据类型--浮点数类型

3 、浮点数类型 浮点型用于表示包含小数点的数据,比如 1.234 就是一个浮点型数据。 Go 语言中的浮点类型采用 IEEE-754 标准的表达方式。 float32 精度是小数点后 7 位 float64 精度是小数点后 15 位。 1. 浮点数表示 Go 语言定义了两个类型 float32 和 floa…...

秘密任务 3.0:如何通过 JWT 认证确保 WebSockets 安全

在之前的文章中,我们探讨了如何通过 WebSockets DTOs 设计实时操作。现在,我们迎来了一项新的挑战:确保 WebSocket 通信在任务执行过程中保持安全。如果敌方潜伏在我们的实时通信渠道中,机密情报可能会被泄露。 任务&#xff1a…...

UID和GID的区别

UID(用户标识符)和 GID(组标识符)是 Linux/Unix 系统中用于管理用户和组权限的核心机制,它们的区别主要体现在作用对象和用途上: 目录 1. 定义与作用对象 2. 主要用途 3. 系统保留范围 4. 用户与组的关…...

【网络】通过Samba实现Window挂在Linux服务器路径

有时候我们去进行内网部署时,会遇到客户或者甲方爸爸说,需要将Linux中的某个路径共享出去到Window上,挂载出比如Z:\这种盘符。通过打开Z盘,来查看服务器的指定目录下的数据。 步骤1: 在Linux中安装samba yum install…...

UE5 UI 教程系列全集

https://www.youtube.com/TheRoyalSkies/search?queryUnreal-5%20UI...

论文笔记(七十八)Do generative video models understand physical principles?

Do generative video models understand physical principles? 文章概括Physics-IQ基准数据集评估协议为什么要创建一个真实世界的Physics-IQ数据集模型物理理解的评估指标动作发生在哪里?空间IoU(Spatial IoU)动作在哪里、何时发生&#xf…...

Viper配置管理笔记

一、什么是 Viper? Viper 是 Go 语言的一个强大工具,就像一个超级管家,专门负责帮你打理程序的各种配置。它能把配置文件(比如 JSON、YAML、TOML 等格式)里的内容读出来,还能监控配置文件的变化&#xff0…...

visual studio无法跳转到函数定义、变量定义、跳转函数位置不准问题解决

参考:https://blog.csdn.net/snakehacker/article/details/135438353 程序有时会出现大部分函数都不能准确的从头文件中正确定位到函数定位,这是因为数据库错乱造成的,可以通过重构数据库来解决,操作方法如下: 菜单栏:工具——选项 文本编辑…...

【Rust 精进之路之第15篇-枚举 Enum】定义、变体与数据关联:表达多种可能性

系列: Rust 精进之路:构建可靠、高效软件的底层逻辑 作者: 码觉客 发布日期: 2025年4月20日 引言:当值拥有“选项”——超越结构体的表达力 在上一篇【结构体 Struct】中,我们学习了如何使用结构体将多个相关的数据字段组合成一个有意义的整体。结构体非常适合表示那些…...

C++ 相关系统软件简介与学习方法【最水的一期】

C 作为一种强大的C 相关系统软件简介编程语言,广泛应用于系统软件开发领域。以下为你介绍几款基于 C 开发的典型系统软件及其特点: 操作系统内核 部分操作系统内核采用 C 开发,例如某些嵌入式操作系统。C 的高性能、底层硬件访问能力和强大的…...

【Linux我做主】GDB调试工具完全指南

Linux下GDB调试工具完全指南:25个核心命令详解与实战示例 github地址 有梦想的电信狗 前言 GDB(GNU Debugger)是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。本文基于实际开发经验&#xff0…...

基于SpringBoot3实现MyBatis-Plus(SSMP)整合快速入门CURD(增删改查)

目录 一、快速搭建SpringBoot-Web工程脚手架。 1.1 Spring Initializr 初始化工程。(官方提供) 1.2 工程脚手架初始化详细步骤。(IDEA2024.1.1) 二、MyBatis-Plus的特性与快速上手。 2.1 官网地址与基本特性。 2.2 快速上手技术栈基础。 2.3 Spring Boot2 的 MyBatis-Plus Star…...

短视频电商新纪元:TikTok Shop全球蓝海争夺战进入关键窗口期

一、流量重构:TikTok Shop改写全球电商版图 2024年,全球跨境电商市场迎来新一轮洗牌。当Temu、Shein等平台深陷“低价内卷”泥潭时,TikTok Shop凭借日均30亿次的短视频流量,正在开辟一条“内容即货架”的颠覆性赛道。最新数据显示…...

uniapp-商城-29-vuex 关于系统状态的管理

按照我们前面讲的,vuex,的使用方式: 步骤如下: 1 先创建store 文件夹 2 在 store 中 创建一个 index.js 3、 在 store 中,创建一个modules文件夹 4、在store中,创建一个getters.js 5、在modules文件…...

Qt中修改了UI设计文件后编译不生效问题的解决办法

复制工程过来后: 1、删除build文件 2、删除.user文件,恢复为文件最初的那样 3、执行make distclean,删除所有由先前构建过程生成的文件 4、再次打开工程,修改ui文件编译生效!...

Python 项目环境配置与 Vanna 安装避坑指南 (PyCharm + venv)

在进行 Python 项目开发时,一个干净、隔离且配置正确的开发环境至关重要。尤其是在使用像 PyCharm 这样的集成开发环境 (IDE) 时,正确理解和配置虚拟环境 (Virtual Environment) 是避免许多常见问题的关键。本文结合之前安装 Vanna 库时遇到的问题&#…...

Matlab FCM模糊聚类

1、内容简介 Matlab 211-FCM模糊聚类 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

标准的JNI (Java Native Interface) 加载函数 JNI_OnLoad

1.JNI_OnLoad 在 Android Native 开发中&#xff0c;JNI_OnLoad 是动态注册本地方法的标准入口点。以下是一个标准实现示例及其说明&#xff1a; JNI_OnLoad 标准实现 #include <jni.h> #include <string>// 声明本地方法对应的 C/C 函数 jint native_add(JNIEnv…...

微信小程序中使用h5页面预览图片、视频、pdf文件

遇到了这么一个需求&#xff0c;需要在微信小程序中点击文件&#xff0c;进行文件预览。 要求&#xff1a; 图片&#xff1a;长图需要宽度100%高度自适应&#xff1b;横图的话宽度100%&#xff0c;高度居中显示视频&#xff1a;视频不管横向还是竖向都居中显示&#xff0c;有…...

A2A协议详解:打造统一的AI代理通信标准,实现多Agent系统协同

A2A 协议中文说明 文章目录 A2A 解决现有 Agent 问题 Agent 生态系统现状当前面临的主要问题为什么需要统一协议&#xff0c;有个标准采用复用 A2A 解决方案 统一通信标准代理能力发现机制安全协作框架灵活的交互模式 A2A 与 MCP 的关系 MCP 简介两者的区别与联系集成场景协同…...

博客系统案例练习2-用户注册-redis

前言 用户注册 [请求]/user/register[参数]contentType: application/json{"userName":"wangwu","password":"456789","githubUrl": "https://gitee.com/bubble-fish666/spring-cloud","email": &quo…...

【人工智能】推荐开源企业级OCR大模型InternVL3

推荐开源企业级OCR大模型InternVL3 文章参考来源: https://huggingface.co/OpenGVLab/InternVL3-14B-Instruct https://www.aivi.fyi/llms/deploy-InternVL3 InternVL3&#xff0c;这是一个高级多模态大型语言模型 &#xff08;MLLM&#xff09; 系列&#xff0c;展示了卓越的整…...

聊天室项目

一.完善注册页面 1.完善注册页面图标&#xff0c;添加检测注册页面各个登录信息是否完善&#xff0c;并且通过信号和槽与自定义一个计时器&#xff0c;当注册完毕后跳转到显示注册完毕的页面。 2.各个坚持注册页面是否按要求的函数 3.完善主页面&#xff0c;设置信号和槽&…...

并发设计模式实战系列(4):线程池

&#x1f31f; ​大家好&#xff0c;我是摘星&#xff01;​ &#x1f31f; 今天为大家带来的是并发设计模式实战系列&#xff0c;第四章线程池&#xff08;Thread Pool&#xff09;​&#xff0c;废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 线程池核心组件 2. 核心…...

大模型应用案例:主动提问式的 AI 面试官(接入 DeepSeek)

目录 核心逻辑 效果演示 技术选型 大模型应用开发框架&#xff1a;langchain-deepseek UI 展示框架—streamlit 代码获取 后续改进想法 本文附带详细的视频讲解&#xff0c;欢迎小伙伴们来支持—— 【代码宇宙017】大模型&#xff1a;主动提问式的 AI 面试官&#xff0…...

算法笔记—动态规划

1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int tribonacci(int n) {if(n0) return 0;if(n1||n2) return 1;vector<int> dp(4);//初始化dp[0]0; dp[1]1; dp[2]1;for(int i3;i<n1;i){//滚动数组优化需要循环dp[i%4]dp[…...

Vue3集成Element Plus完整指南:从安装到主题定制上

一、Element Plus简介 Element Plus是一套基于Vue 3.0的桌面端组件库&#xff0c;由饿了么前端团队开源维护。它提供了丰富的UI组件&#xff0c;能够帮助开发者快速构建企业级中后台产品。 1. 安装与卸载 bash 复制 下载 # 安装最新版本 npm install element-plus -S# 卸…...

初识javascript

1. JavaScript 基础语法 (1) 变量声明 JavaScript支持三种声明变量的方式&#xff1a; var&#xff1a;传统的变量声明方式&#xff0c;存在作用域问题&#xff08;函数作用域&#xff09;。 let&#xff1a;块级作用域变量声明方式&#xff0c;避免了var的作用域问题。 co…...

C++项目 —— 基于多设计模式下的同步异步日志系统(5)(单例模式)

C项目 —— 基于多设计模式下的同步&异步日志系统&#xff08;5&#xff09;&#xff08;单例模式&#xff09; 一个问题单例模式实现1. 单例模式&#xff1a;全局唯一实例功能&#xff1a;实现细节&#xff1a;作用&#xff1a; 2. 日志器的注册与查找功能&#xff1a;实现…...

rag搭建,是如何进行向量匹配检索的?

RAG 里为什么要“向量检索”? 在 Retrieval-Augmented Generation (RAG) 中,我们的目标是让 LLM 能够“回答它本身不知道的内容”。做法是: 将知识(文本)进行向量化,存入向量数据库;用户提问后,也将问题向量化;去数据库里 找出与这个问题最相似的一批知识,返回喂给 …...

k8s 基础入门篇之开启 firewalld

前面在部署k8s时&#xff0c;都是直接关闭的防火墙。由于生产环境需要开启防火墙&#xff0c;只能放行一些特定的端口&#xff0c; 简单记录一下过程。 1. firewall 与 iptables 的关系 1.1 防火墙&#xff08;Firewall&#xff09; 定义&#xff1a; 防火墙是网络安全系统&…...

C++在VR/AR图形处理开发中的实战应用

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

Matlab 基于模型参考自适应法和SVPWM的异步电机控制

1、内容简介 Matlab 212-基于模型参考自适应法和SVPWM的异步电机控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

深入浅出讲解UDP检验中如何计算检验和

一、计算机中的进制&#xff1a;二进制与十六进制 1. 十进制&#xff08;Decimal&#xff09; 特点&#xff1a;用0-9表示&#xff0c;逢10进1。 例子&#xff1a;数字 123 表示 110221013100110221013100。 2. 二进制&#xff08;Binary&#xff09; 特点&#xff1a;用0和…...

Python类和对象一(十)

封装&#xff1a; 在创建对象之前&#xff0c;通过类将相关的属性和方法打包到一起&#xff0c;然后通过类来生成响应的对象 定义类&#xff1a; 创建对象&#xff1a; 方法里面有个参数self&#xff1a;new的对象 当我们调用类里面方法的时候&#xff0c;py是怎么知道是哪…...

jupyter切换存储路径

一、问题描述 当我采用官网提供的安装方式pip install jupyterlab&#xff0c;在Windows下的powershell里安装jupyterlab成功&#xff0c;并启动&#xff1a;jupyter lab 打开网页&#xff1a;http://localhost:8888/lab 显示如下&#xff1a;成功了&#xff0c;可是我发现这…...

PH热榜 | 2025-04-20

1. Checklist GG 标语&#xff1a;基于人工智能的清单管理工具 介绍&#xff1a;checklist.gg 是一款基于人工智能的检查清单管理工具&#xff0c;旨在帮助组织确保每次都能准确完成任务。 产品网站&#xff1a; 立即访问 Product Hunt&#xff1a; View on Product Hunt 关…...

YOLOv11改进——基于注意力机制和密集小目标增强型EVA模块的设计与实现

随着计算机视觉技术的快速发展&#xff0c;目标检测算法在实时性与检测精度间的平衡成为研究重点。YOLO&#xff08;You Only Look Once&#xff09;系列算法以其高效性和准确性&#xff0c;长期占据实时目标检测领域的前沿位置。然而&#xff0c;尽管最新版本在通用场景表现优…...

n8n 中文系列教程_04.半开放节点深度解析:Code与HTTP Request高阶用法指南

在低代码开发领域&#xff0c;n8n凭借其独特的半开放架构打破了传统自动化工具的边界。本文深度剖析两大核心节点——Code与HTTP Request&#xff0c;从底层原理到企业级实战&#xff0c;揭秘如何通过代码自由扩展与API无缝集成&#xff0c;突破平台限制。无论是对接国产生态&a…...

Linux学习——了解和熟悉Linux系统的远程终端登录

Linux学习——了解和熟悉Linux系统的远程终端登录 一.配置Ubuntu系统的网络和用户 1、设置虚拟机网络为桥接模式 打开VMWare&#xff0c;选择编辑虚拟机设置&#xff0c;在网络适配器设置中&#xff0c;选择“桥接模式”&#xff0c;保存设置并启动Ubuntu。 2、配置Ubuntu的…...