线性回归 (Linear Regression) 多项式回归 (Polynomial Regression)
目录
- 线性回归 (Linear Regression)
- 单变量线性回归 (Univariate linear regression)
- 代价函数 (Cost function)
- 梯度下降 (gradient descent) 及公式由来
- 梯度下降的变体
- Quiz
- 多类特征 (Multiple features)
- 多元线性回归 (Multiple linear regression)
- 向量化 (Vectorization)
- 正规方程 (Normal equation)
- 正规方程 vs 梯度下降
- 1. 正规方程(解析解)
- 2. 梯度下降(迭代优化)
- 实际应用建议
- 特征缩放
- 问题的发现
- 实现特征缩放
- 均值归一化 (Mean normalization)
- 标准差标准化 / Z-score归一化 (Z-score normalization)
- 检查梯度下降是否收敛
- 选择学习率
- 特征工程 (Feature engineering)
- 多项式回归 (Polynomial Regression)
线性回归 (Linear Regression)
单变量线性回归 (Univariate linear regression)
univariate -> 单变量
代价函数 (Cost function)
**代价函数(cost function):**用来衡量假设函数f(x)准确性的工具
线性回归的目标是找到参数w和b,使代价函数J的值最小
{ y ^ ( i ) = f w , b ( x ( i ) ) f w , b ( x ( i ) ) = w x ( i ) + b \begin{cases} \hat y ^ {(i)} = f_{w, b}(x^{(i)}) \\ f_{w, b}(x^{(i)}) = wx^{(i)} + b \end{cases} {y^(i)=fw,b(x(i))fw,b(x(i))=wx(i)+b
slop: 斜率
**误差 (error): **
y − y ^ y - \hat y y−y^
**平方误差 (squared error): **
( y ^ ( i ) − y ( i ) ) 2 (\hat y ^ {(i)} - y ^ {(i)}) ^ 2 (y^(i)−y(i))2
其中 y ^ − y \hat y − y y^−y 就是误差项(error term),通常记作 ϵ 或 e。
【Squared error cost function】
∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 \sum_{i=1}^m (\hat y^{(i)} - y^{(i)}) ^ 2 i=1∑m(y^(i)−y(i))2
m => the number of training examples
Cost function(代价函数):
1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 \frac{1}{2m} \sum_{i=1}^m (\hat y^{(i)} - y^{(i)}) ^ 2 2m1i=1∑m(y^(i)−y(i))2
divide by 2 -> 是方便后续计算整洁>
用 J J J 来表示代价函数:
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w, b) = \frac{1}{2m} \sum_{i=1}^m (\hat y^{(i)} - y^{(i)}) ^ 2 J(w,b)=2m1i=1∑m(y^(i)−y(i))2
回归的目标:通过最小化代价函数 -> 找到最好的参数
f w ( x ) = w x f_{w}(x)=wx fw(x)=wx 的代价函数
f w , b ( x ) = w x + b f_{w, b}(x)=wx+b fw,b(x)=wx+b 的代价函数
等高线绘制:椭圆的中心点即为代价函数 J ( w , b ) J(w,b) J(w,b) 的最小值
梯度下降 (gradient descent) 及公式由来
**梯度下降:**寻找代价函数的最小值(只能找到局部最低点)
梯度下降公式:
数学基础
导数 偏导数 梯度
导函数 偏导函数 方向导数
偏导 => 相当于求沿着x轴 y轴的导数
例如,求沿 x 轴的偏导,这样平行 x 轴正方向形成一个切面,这时 y 就会成为一个常数,因为切面仅占 y 轴中的一个点。
偏导仅能求平行 x 轴、y 轴的方向的变化趋势
通过叠加 x轴、y轴的方向向量,得到各个方向的变化趋势 => 方向导数
(x、z 轴)
梯度 => 沿着哪个方向走的最快
如果要向其他方向,就需要对两种的数值进行修改,从而才能调整方向,而这种修改都是减小的方式进行的。【类似物理中的两方向不同的力进行叠加】
不损失两边的数值,两边的数值都利用好,对应的方向就是 ( f z ′ ( x 0 , y 0 ) , f x ′ ( x 0 , y 0 ) ) (f_z'(x_0, y_0), f_x'(x_0, y_0)) (fz′(x0,y0),fx′(x0,y0))。
因此就得到了梯度下降的公式【因为两轴方向的数值吃满 因此直接减去偏导】:
{ w = w − α ∂ ∂ w J ( w , b ) b = b − α ∂ ∂ b J ( w , b ) \begin{cases} w = w - α\frac{∂}{∂w}J(w,b) \\ b = b - α\frac{∂}{∂b}J(w,b) \end{cases} {w=w−α∂w∂J(w,b)b=b−α∂b∂J(w,b)
由梯度公式推导而来,可知两个变量必须同时变化。
α:学习率,即往下走的步子大小
(α不能过大也不能过小,要合理选择)
求偏导易得以下结果:
J ( w , b ) = 1 2 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) 2 J(w,b) = \frac{1}{2m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})^2 J(w,b)=2m1i=0∑m−1(fw,b(x(i))−y(i))2
∂ J ( w , b ) ∂ w = 1 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) x ( i ) ∂ J ( w , b ) ∂ b = 1 m ∑ i = 0 m − 1 ( f w , b ( x ( i ) ) − y ( i ) ) \begin{align} \frac{\partial J(w,b)}{\partial w} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)})x^{(i)} \\ \frac{\partial J(w,b)}{\partial b} &= \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)}) \\ \end{align} ∂w∂J(w,b)∂b∂J(w,b)=m1i=0∑m−1(fw,b(x(i))−y(i))x(i)=m1i=0∑m−1(fw,b(x(i))−y(i))
梯度下降的变体
- 批量梯度下降(BGD):每次迭代计算梯度时使用全部训练样本(严格对应代价函数的定义)
- 随机梯度下降(SGD):每次随机使用1个样本计算梯度近似
- 小批量梯度下降(MBGD):每次使用一个小样本子集(如32/64个样本)
计算效率的权衡:
- BGD:梯度方向准确但计算慢
- SGD:计算快但噪声大
- MBGD:平衡两者
在机器学习和优化算法的上下文中,噪声(Noise)指的是梯度估计或优化过程中的随机波动或不准确性。它通常是由于使用数据的子集(而非全体数据)来计算梯度而引入的。
噪声的来源
- 随机梯度下降(SGD):每次迭代仅用1个随机样本计算梯度,该样本的梯度可能与全体数据的真实梯度方向差异很大,这种偏差就是噪声。
- 小批量梯度下降(MBGD):用一个小批量(如32个样本)计算梯度,虽然比SGD更稳定,但仍会引入噪声(因为不是全体数据)。
- 批量梯度下降(BGD):理论上无噪声(用全体数据计算梯度),但计算成本高。
批量梯度下降:每一步下降都使用训练集中的所有样本数据进行计算 (就是上述推导采用的)
Quiz
多类特征 (Multiple features)
**多类特征:**x 为多个特征组成的向量
x ⃗ ( i ) \vec{x}^{(i)} x(i) 上的向量符号是可选的,不是必须采用的。
多元线性回归 (Multiple linear regression)
向量化 (Vectorization)
通过向量化,可以较为简洁表达公式,同时编程中也可以提高执行性能。
编写向量化代码,充分利用线性代数及GPU硬件。
原理:多线并行计算,比for循坏快很多
*
和 dot
对比
运算类型 | 是否默认并行 | 说明 |
---|---|---|
np.dot(A, B) | ✅ 是 | 调用 BLAS 库(如 OpenBLAS/MKL),支持多线程 |
A * B (逐元素乘) | ❌ 否 | 通常单线程,但可能用 SIMD 向量化加速 |
原因
*
是 逐元素运算,计算模式简单,并行开销可能超过收益。np.dot
是 矩阵乘法,计算密集,BLAS 库会主动优化并行。
np.dot
为什么比 Python 循环快?
对比项 | np.dot (C + BLAS) | Python 循环 |
---|---|---|
执行方式 | 编译后的机器码 | 解释执行(逐行翻译) |
内存访问 | 连续内存优化(SIMD) | 无优化,缓存效率低 |
并行计算 | 多线程 + SIMD 指令 | 单线程 |
底层优化 | 调用 BLAS(如 MKL、OpenBLAS) | 无优化 |
正常发行版的NumPy貌似不能使用GPU,PyTorch可以,或CuPy
然而NumPy在小规模的时候用的不是多线程,大规模才会使用
向量化通过并行运算极大提升了效率,类似于一种空间换时间的 trade off,同时也表明了向量化的高效主要体现于大数据集的机器学习。
向量化表示多元线性回归的梯度下降:
正规方程 (Normal equation)
- Only for linear regression
- Solve for w, b without iterations
Disadvantages:
- Doesn’t generalize to other learning algorithms. (如逻辑回归算法、神经网络其他算法等)
- Slow when number of features is large (> 10,000)
实际工业场景中,机器学习从业者几乎不会手动实现正规方程(Normal Equation),而是直接调用优化过的库函数(如 scikit-learn
、statsmodels
或数值计算库)。
正规方程 vs 梯度下降
1. 正规方程(解析解)
-
定义:
直接通过数学公式求解线性回归的最优参数 ( w , b ) (w,b) (w,b):
w = ( X T X ) − 1 X T y \mathbf{w} = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y} w=(XTX)−1XTy -
适用场景:
- 小规模数据(特征数 n < 1 0 4 n < 10^4 n<104)。
- 机器学习库中的实现(如
scikit-learn
的LinearRegression
)。
-
优点:
- 无需迭代,直接得出解析解。
- 无需调整超参数(如学习率)。
-
缺点:
- 计算复杂度高 O ( n 3 ) O(n^3) O(n3),不适用于高维数据。
- 若 X T X \mathbf{X}^T \mathbf{X} XTX 不可逆(如特征共线性),需使用伪逆或正则化。
2. 梯度下降(迭代优化)
- 定义:
通过迭代调整参数 ( w , b ) (w,b) (w,b),逐步最小化损失函数(如均方误差)。 - 适用场景:
- 大规模数据(特征数或样本量极大)。
- 深度学习和其他复杂模型(如神经网络)。
- 优点:
- 计算效率高(支持分批计算,如随机梯度下降)。
- 可扩展至非线性模型。
- 缺点:
- 需选择学习率等超参数。
- 可能收敛到局部最优(凸问题如线性回归无此问题)。
实际应用建议
- 优先调库:
- 使用
scikit-learn
的LinearRegression
(内部基于正规方程或SVD)。 - 大规模数据用
SGDRegressor
(梯度下降实现)。
- 使用
- 手动实现的场景:
- 教学/面试时理解原理。
- 定制化需求(如添加特殊约束)。
- 数值稳定性:
- 若手动实现,用
np.linalg.pinv
替代逆矩阵计算。
- 若手动实现,用
特征缩放
问题的发现
contour plot 等高线图
x 1 x_1 x1、 x 2 x_2 x2 取值大小相差较大,导致等高线图中 w 1 w_1 w1、 w 2 w_2 w2 取值在两轴上,一侧数值较大,一侧数值较少。
如上图中 w 2 w_2 w2 需要变动很大才能保持“等高”,而 w 1 w_1 w1 仅需要一点变动数值就可以了。
同一个学习率对于不同的特征不一定都适合,比如 w 1 w_1 w1 的取值很小,学习率一定时梯度变换的幅度就会很大,就会来回跳,而 w 2 w_2 w2 变换幅度较小,正常逼近。
当不用的特征值取值范围差异很大时,可能导致梯度下降非常缓慢。但是经过重新缩放不同的特征使它们都在相似的范围内取值,这样可以显著加快梯度下降的速度。
如图中通过重新缩放的 x 1 x_1 x1、 x 2 x_2 x2,等高线会更接近于一个圆形。
实现特征缩放
进行特征缩放的根本原因是学习率对每个特征都是固定的。
除以最大值
均值归一化 (Mean normalization)
x i = x i − μ i m a x − m i n x_i = \frac{x_i - μ_i}{max - min} xi=max−minxi−μi
将平均值去当作原点, x i x_i xi 减去平均值 μ i μ_i μi 可以当作数值在原点附近的分布位置。在上图 x 1 x_1 x1 的范围 2000 − 300 2000-300 2000−300 可以看作是 x 1 x_1 x1 的变化幅度,将原点附近的数值除以他的变化幅度来实现它的归一化。
标准差标准化 / Z-score归一化 (Z-score normalization)
概率统计中,正态分布的标准化将参数为 ( μ , σ 2 ) (μ, σ^2) (μ,σ2) 的正态分布化为参数为 ( 0 , 1 ) (0, 1) (0,1) 的标准正态分布。
经验定律 (a rule of thumb)
不需要严格徘徊在 [-1, 1] 之间
当然 ,数据归一化并不是万能的。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的包括线性回归、逻辑回归、支持向量机、 神经网络等模型,但对于决策树模型则并不适用。
检查梯度下降是否收敛
单词解释
converge 收敛
如果 J J J 的值在一次迭代后增加,通常意味着学习率α选择不当即学习率过大,或者代码中有bug。
收敛的判断
-
通过学习曲线判断
-
通过自动收敛测试
自动收敛需要寻找合适的阈值 ε ε ε ,这点相当困难。
选择学习率
选择合适学习率非常重要,学习率过小会导致梯度下降速度太慢,学习率过大会甚至导致不会收敛。
常将学习率设置很小,用来调试代码是否正确。
反复调试来选择到一个合适的学习率
特征工程 (Feature engineering)
特征选择对学习算法的性能有巨大的影响
多项式回归 (Polynomial Regression)
通过将多元线性回归与特征工程结合,通过构造多项式特征来扩展线性模型的能力,从而形成多项式回归(Polynomial Regression)。这是一种经典且强大的方法,可以拟合非线性关系。
在出现平方、立方后,对特征进行缩放尤为的重要。
相关文章:
线性回归 (Linear Regression) 多项式回归 (Polynomial Regression)
目录 线性回归 (Linear Regression)单变量线性回归 (Univariate linear regression)代价函数 (Cost function)梯度下降 (gradient descent) 及公式由来梯度下降的变体Quiz多类特征 (Multiple features)多元线性回归 (Multiple linear regression)向量化 (Vectorization)正规方程…...
AI在能源消耗管理及能源效率提升中的核心应用场景及技术实现
以下是 AI在能源消耗管理及能源效率提升中的核心应用场景及技术实现,分领域详细说明: 1. 实时能源监测与异常检测 AI技术应用: 物联网(IoT) 传感器数据采集:实时收集设备、建筑或工厂的能耗数据ÿ…...
dumpsys--音频服务状态信息
Audio相关的信息获取指令: dumpsys media.audio_flinger dumpsys media.audio_policy dumpsys audio media.audio_flinger dumpsys media.audio_flinger 用于获取 AudioFlinger 服务的详细状态信息。 1. 命令作用 该命令输出当前系统的 音频设备状态、活跃音频流…...
JavaScript模块化开发:CommonJS、AMD到ES模块
引言 在Web开发的早期阶段,JavaScript代码通常被编写在一个庞大的文件中或分散在多个脚本标签里,这种方式导致了全局变量污染、依赖关系难以管理、代码复用困难等问题。随着Web应用日益复杂,模块化编程成为了解决这些问题的关键。本文将带您…...
面试情景题:企业内部系统如何做微前端拆分,如何通信?
在前端开发领域,技术的演进总是伴随着业务需求的复杂化与规模化而不断向前推进。近年来,微前端(Micro Frontends)作为一种全新的架构理念,逐渐成为解决大型前端应用复杂性的重要手段。与传统的单体前端应用不同&#x…...
OpenHarmony Camera开发指导(五):相机预览功能(ArkTS)
预览是在相机启动后实时显示场景画面,通常在拍照和录像前执行。 开发步骤 创建预览Surface 如果想在屏幕上显示预览画面,一般由XComponent组件为预览流提供Surface(通过XComponent的getXcomponentSurfaceId方法获取surfaceid)&…...
鸿蒙API15 “一多开发”适配:解锁黄金三角法则,开启高效开发新旅程
一、引言 在万物互联的时代浪潮中,鸿蒙操作系统以其独特的 “一多开发” 理念,为开发者打开了一扇通往全场景应用开发的新大门。“一多开发”,即一次开发,多端部署 ,旨在让开发者通过一套代码工程,就能高效…...
RAG(检索增强生成)、ReAct(推理与行动) 和 多模态AI 的详细解析,包括三者的定义、工作原理、应用场景及协同关系
以下是 RAG(检索增强生成)、ReAct(推理与行动) 和 多模态AI 的详细解析,包括三者的定义、工作原理、应用场景及协同关系: 一、RAG(Retrieval-Augmented Generation) 1. 核心原理 …...
网络安全知识点2
1.虚拟专用网VPN:VPN用户在此虚拟网络中传输私网流量,在不改变网络现状的情况下实现安全,可靠的连接 2.VPN技术的基本原理是利用隧道技术,对传输报文进行封装,利用VPN骨干网建立专用数据传输通道,实现报文…...
DS-SLAM 运动一致性检测的源码解读
运动一致性检测是Frame.cc的Frame::ProcessMovingObject(const cv::Mat &imgray)函数。 对应DS-SLAM流程图Moving consistency check的部分 把这个函数单独摘出来,写了一下对两帧检测,查看效果的程序: #include <opencv2/opencv.hpp…...
VSTO幻灯片退出播放(C#模拟键盘鼠标的事件)
今天遇到了个问题,幻灯片放映到某一页时需要退出播放,没有找到对应的方法,所以想到了直接通过ESC键可以退出,所以模拟执行了一下ESC键,发现真的可以。在此记录一下。 C# 模拟键盘鼠标的事件整理 1、模拟键盘2、模拟鼠标…...
Echarts柱状图斜线环纹(图形的贴花图案)
单独设置 <!--此示例下载自 https://echarts.apache.org/examples/zh/editor.html?cbar-stack&codePYBwLglsB2AEC8sDeAoWszGAG0iAXMmuhgE4QDmFApqYQOQCGAHhAM70A0x6L7ACsAjQwtQqhIkwATxDUGbABaMAJsADu9HrAC-xHd3TZqNaCvEHiFcuaKTjAMzAMAzAFIu28hUXPY9ABYPQxIAI2AwTABbV…...
前端页面效果收集
文章目录 数字雨元素融化动画电子签名共享屏幕 数字雨 <canvas id"matrix"></canvas> <script>const canvas document.getElementById(matrix);const ctx canvas.getContext(2d);canvas.width window.innerWidth;canvas.height window.innerH…...
ASP.NET Core Web API 配置系统集成
文章目录 前言一、配置源与默认设置二、使用步骤1)创建项目并添加配置2)配置文件3)强类型配置类4)配置Program.cs5)控制器中使用配置6)配置优先级测试7)动态重载配置测试8)运行结果示…...
【hadoop】基于hive的B站用户行为大数据分析
1.需求分析 b站现在积累有用户数据和视频列表数据,为了配合市场部门做好用户运营工作,需要对b站的用户行为进行分析,其具体需求如下所示: 统计b站视频不同评分等级(行转列)的视频数。 统计上传b站视频最多的…...
如何搭建符号执行环境并跑通第一个测试样例
0.如题 我使用的是verilator和klee进行符号执行的学习,目前还处于起步阶段,起步阶段除了要了解符号执行的定义和作用之外就是环境的搭建了,没想到搭建环境这一步就浪费了很多时间,主要问题出在按照官方的步骤进行搭建的时候&…...
基于 Django 进行 Python 开发
基于 Django 进行 Python 开发涉及多个方面的知识点,以下为你详细介绍: 1. Django 基础 项目与应用创建 借助django-admin startproject project_name来创建新的 Django 项目。利用python manage.py startapp app_name创建新的应用。项目结构 理解项目各文件和目录的作用,像…...
【含文档+PPT+源码】基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现
课程目标: 教你从零开始部署运行项目,学习环境搭建、项目导入及部署,含项目源码、文档、数据库、软件等资料 课程简介: 本课程演示的是一款基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现,主要针对计算机相关…...
使用DDR4控制器实现多通道数据读写(八)
一、 本章概括 在之前的章节已经详细介绍了DDR4的AXI协议,并实现了对DDR4简单的读写操作。这一章节来建立单通道的256位数据的读写,并放出工程框架,说明整体设计思路。 二、 工程框架 三、 设计思路 DDR内存通常用于大容量数据存储…...
Oracle 处理“不允许长度为0的列”(ORA-01723)问题解析
错误原因 当使用 CREATE TABLE ... AS SELECT 或创建物化视图时,若查询结果中的某列值为空字符串()或隐式 NULL 且未显式指定数据类型,Oracle 无法推断该列的长度和类型,从而抛出 ORA-01723: zero-length columns…...
燕山大学计算机网络之Java实现TCP数据包结构设计与收发
觉得博主写的好,给博主点点免费的关注吧! 目录 摘要.................................................................................................................... 4 前言.............................................................…...
Linux操作系统学习之---进程状态
目录 明确进程的概念: Linux下的进程状态: 虚拟终端的概念: 见一见现象: 用途之一 : 结合指令来监控进程的状态: 和进程强相关的系统调用函数接口: getpid()和getppid(): fork(): fork函数创建子进程的分流逻辑: 进程之间具有独立性: 进程中存在的写时拷贝: 见一见进程状态…...
Oracle 12.1.0.2补丁安装全流程
第一步,先进行备份 tar -cvf u01.tar /u01 第二步,更新OPatch工具包 根据补丁包中readme信息汇总提示的信息,下载对应版本的OPatch工具包,本次下载的版本为: p6880880_122010_Linux-x86-64.zip opatch版本为最新的…...
第19章:基于efficientNet实现的视频内容识别系统
目录 1.efficientNet 网络 2. 猫和老鼠 3. QT推理 4. 项目 1.efficientNet 网络 本章做了一个视频内容识别的系统 本文选用的模型是efficientNet b0版本 EfficientNet 是 Google 团队在 2019 年提出的一系列高效卷积神经网络模型,其核心思想是通过复合缩放&…...
【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata框架实现原理详解 - 3-5年Java开发必备知识
【Java面试系列】Spring Cloud微服务架构中的分布式事务解决方案与Seata框架实现原理详解 - 3-5年Java开发必备知识 引言 在微服务架构中,分布式事务是一个不可避免的挑战。随着业务复杂度的提升,如何保证跨服务的数据一致性成为了面试中的高频问题。本…...
div(HTML标准元素)和view(微信小程序专用组件)的主要区别体
div(HTML标准元素)和view(微信小程序专用组件)的主要区别体现在以下方面: 一、应用场景与开发框架 适用平台不同 div是HTML/CSS开发中通用的块级元素,用于Web页面布局;view是微信小程序专…...
AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析
以下是 AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析: 1. 多Agent协同的定义与核心目标 多Agent系统(MAS, Multi-Agent System): 由多个独立或协作的智能体(Agent)组成ÿ…...
03_Americanas精益管理项目_StarRocks
文章目录 03_StarRocks(一)StarRocks简介1、什么是StarRocks【理解】1)概述2)适用场景2、系统架构【理解】1)系统架构图2)数据管理3、使用【熟悉】(二)表设计4、StarRocks表设计【理解】1)列式存储2)索引3)加速处理5、数据模型【掌握】5-1 明细模型1)适用场景2)创…...
CSS进度条带斑马纹动画(有效果图)
效果图 .wxml <view class"tb"><view class"tb-line" style"transform:translateX({{w%}})" /> </view> <button bind:tap"updateLine">增加进度</button>.js Page({data: {w:0,},updateLine(){this.…...
C++ static的使用方法及不同作用
在 C 里,static 是一个用途广泛的关键字,在不同场景下有不同含义,下面为你详细介绍: 1. 全局变量前的 static 当 static 用在全局变量前时,它会改变变量的链接属性。 默认全局变量:默认的全局变量具有外…...
CSS 美化页面(四)
一、浮动float属性 属性值描述适用场景left元素向左浮动,腾出右侧空间供其他元素使用,其他内容会围绕在其右侧。横向排列元素(如导航菜单)、图文混排布局。right元素向右浮动,腾出左侧空间供其他元素使…...
驱动-原子操作
前面 对并发与竞争进行了实验, 两个 app 应用程序之间对共享资源的竞争访问引起了数据传输错误, 而在 Linux 内核中, 提供了四种处理并发与竞争的常见方法: 分别是原子操作、 自旋锁、 信号量、 互斥体, 这里了解下原子…...
Flutter ListView 详解
ListView 是 Flutter 中用于构建滚动列表的核心组件,支持垂直、水平滚动以及复杂的动态布局。本文将深入解析其核心用法、性能优化策略和高级功能实现,助你打造流畅高效的列表界面。 一、基础篇:快速构建各类列表 1. 垂直列表(默…...
关于视频的一些算法内容,不包含代码等
视频算法: 视频降噪, 去除视频中的噪音,提高图像质量 工作原理: 时域降噪:利用相邻帧之间的相似性,通过平均或滤波来减少随机噪声。 空域降噪:在单帧内使用滤波器(高斯滤波器&am…...
OpenCV 图形API(43)颜色空间转换-----将 BGR 图像转换为 LUV 色彩空间函数BGR2LUV()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从BGR色彩空间转换为LUV色彩空间。 该函数将输入图像从BGR色彩空间转换为LUV。B、G和R通道值的传统范围是0到255。 输出图像必须是8位无符…...
keil报错 ..\..\Libraries\CMSIS\stm32f10x.h(298): error: #67: expected a “}“
报错原因: 通常是由于启动文件、头文件定义或驱动选择不一致导致的。以下是一些具体的解决方案,可以帮助你解决这个问题: 检查步骤: 1. 检查启动文件 确保你的启动文件与你的芯片型号相匹配。例如,如果你的芯片是S…...
图像预处理-添加水印
一.ROI切割 类似裁剪图片,但是原理是基于Numpy数组的切片操作(ROI数组切片是会修改原图数据的),也就是说这个“裁剪”不是为了保存“裁剪”部分,而是为了方便修改等处理。 import cv2 as cv import numpy as npimg cv.imread(../images/dem…...
扩展欧几里得算法【Exgcd】的内容与题目应用
1.简介 exgcd的目的是表示出二元一次不定方程的通解。 形式化地,exgcd算法就是输入a,b,c的值,返回一组x,y,满足 a x b y c axbyc axbyc。 2.1方程无整数解的情况 当 c 不能被 a ,b最小公倍…...
OpenCV day5
函数内容接上文:OpenCV day4-CSDN博客 目录 9.cv2.adaptiveThreshold(): 10.cv2.split(): 11.cv2.merge(): 12.cv2.add(): 13.cv2.subtract(): 14.cv2.multiply(): 15.cv2.divide(): 1…...
Spring DI 详解
学习过 IoC 后,就知道我们可以将对象交给 Spring 进行管理,但是我们在一个类会有若干属性,也就是这个类依赖于这若干个属性,那么我们就可以将交给 Spring 管理的对象注入到这个类中,这也就是依赖注入。 依赖注入有三种…...
解锁动态规划的奥秘:从零到精通的创新思维解析(9)
前言: 小编在前几日写了关于动态规划中的多状态dp的问题,此时小编将会讲述一个动态规划我们常常会遇到的一类问题——股票问题,股票问题就类似小编上一篇所讲述的粉刷房子的问题,可以通过一个二维的dp表来代替多个一维的dp表。买卖…...
redis 配置日志和数据存储位置
Redis配置日志和数据存储位置 介绍 Redis是一个开源的高性能键值存储数据库,常用于缓存、消息队列和实时分析等场景。在使用Redis时,我们需要配置日志和数据存储位置,以便更好地管理和监控Redis的运行状态。本文将介绍如何配置Redis的日志和数…...
STL详解 - stack与queue的模拟实现
目录 一、容器适配器 1. 什么是适配器模式 2. stack与queue的底层结构 3. deque的原理与缺陷 3.1 deque的原理 3.2 deque的缺陷 4. 为何选择deque作为默认底层容器 二、stack与queue的模拟实现 1. stack的实现 2. queue的实现 一、容器适配器 1. 什么是适配器模式 适…...
Chromium 134 编译指南 macOS篇:获取源代码(四)
1. 引言 在Chromium 134的开发之旅中,获取源代码是一个至关重要的里程碑。本文将引导您完成这一关键步骤,为后续的编译和开发工作奠定坚实的基础。无论您是出于学习目的,还是计划开发自己的浏览器项目,掌握获取Chromium源码的方法…...
关于 IntelliJ IDEA 中频繁出现的 Kotlin 及其核心作用
关于 IntelliJ IDEA 中频繁出现的 Kotlin 及其核心作用 1. Kotlin 是什么? Kotlin 是由 JetBrains(IntelliJ IDEA 的开发商)设计的一种现代化编程语言,2016年正式发布,2017年被 Google 指定为 Android 官方开发语言。…...
MYOJ_11700(UVA10591)Happy Number(快乐数)(超快解法:图论思想解题)
原题(English) Let the sum of the square of the digits of a positive integer S0S0 be represented by S1S1. In a similar way, let the sum of the squares of the digits of S1S1 be represented by S2S2 and so on. If Si1Si1 for some i≥1i≥1, then the or…...
2843. 统计对称整数的数目
2843. 统计对称整数的数目 题目链接:2843. 统计对称整数的数目 代码如下: class Solution { public:int countSymmetricIntegers(int low, int high) {int res 0;for (int i low;i < high;i) {string s to_string(i);int n s.size();if (n % 2 …...
【模块化拆解与多视角信息6】自我评价:人设构建的黄金50字——从无效堆砌到精准狙击的认知升级
写在最前 作为一个中古程序猿,我有很多自己想做的事情,比如埋头苦干手搓一个低代码数据库设计平台(目前只针对写java的朋友),比如很喜欢帮身边的朋友看看简历,讲讲面试技巧,毕竟工作这么多年,也做到过高管,有很多面人经历,意见还算有用,大家基本都能拿到想要的offe…...
ServletRequestAttributeListener 的用法笔记250417
ServletRequestAttributeListener 的用法笔记250417 以下是关于 ServletRequestAttributeListener 的用法详解,涵盖核心方法、实现步骤、典型应用场景及注意事项,帮助您有效监听请求级别属性(ServletRequest 中的属性)的变化&…...
大模型在胃十二指肠溃疡预测及诊疗方案制定中的应用研究
目录 一、引言 1.1 研究背景与目的 1.2 国内外研究现状 1.3 研究方法和创新点 二、大模型相关理论基础 2.1 大模型的基本原理 2.2 适用于医疗领域的大模型类型 2.3 大模型在医疗领域的应用现状和潜力 三、胃十二指肠溃疡的疾病特征 3.1 疾病概述 3.2 诊断方法 3.3 …...