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

最小二乘法拟合直线,用线性回归法、梯度下降法实现

参考笔记:

最小二乘法拟合直线,多个方法实现-CSDN博客

一文让你彻底搞懂最小二乘法(超详细推导)-CSDN博客


目录

1.问题引入

2.线性回归法

2.1 模型假设

2.2 定义误差函数

2.3 求偏导并解方程

2.4 案例实例

2.4.1 手工计算实例

2.4.2 使用Python实现 

3.梯度下降法

3.1 前言(梯度下降算法原理介绍)

3.2 模型假设

3.3 定义损失函数

3.4 梯度计算

3.5 更新参数

 3.6 代码演示

4.其他方法


1.问题引入

在数据分析问题中,常常需要通过 n 组二维数据点 \color{red}(x_1,y_1),(x_2,y_2)....(x_n,y_n)  拟合出一条直线 y={\color{red}a}x+\color{red}b,其中斜率 a、截距 b 是未知参数,如下图所示:

那为什么要说拟合呢?这是因为我们无法找到一条直线经过所有的点,也就是说方程无确定解

于是这就是我们引出了要解决的问题:虽然没有确定解,但是我们能不能求出近似解,即拟合出一条直线,使得这条直线能最佳地反映数据点的整体趋势

那么问题又来了, "最佳的准则" 是什么呢?可以是所有数据点到直线的距离总和最小,也可以是所有数据点到直线的误差(真实y值 - 拟合y值)绝对值总和最小,也可以是其他。如果是你面临这个问题你会怎么选择?

早在 19 世纪,勒让德就认为让 "误差的平方和最小" 拟合出来的直线是最接近真实情形的

为什么是 "误差的平方和" 而不是其它的,这个问题连欧拉、拉普拉斯都未能成功回答,后来是高斯建立了一套误差分析理论,从而证明了确实是使 "误差的平方和最小" 的情况下系统是最优的。这个我们就无需深究了

按照勒让德的 "误差的平方和最小" 最佳原则,于是就是求:

y_i:真实 y 值    \hat y_i:拟合 y

拟合一条直线 y={\color{red}a}x+\color{red}b ,其实就是找最优斜率 a 、最优截距 b 的过程,所以我们可以通过上面的 L 函数,在其取得最小值 min 时得到的 a、b 即为最优解,这样拟合出了 n 组数据点\color{red}(x_1,y_1),(x_2,y_2)....(x_n,y_n) 的最佳直线

这就是最小二乘法的思想,所谓 "二乘" 就是平方的意思

至于怎么求出具体的 a、b,理论上可以用:

        ① 线性回归法

        ② 梯度下降法:就是模型训练,把 L 作为损失函数即可

        ③ .....

下面我们就以最常用的线性回归、梯度下降法为例进行推导和求解

2.线性回归法

线性回归法也称为直接法,计算简单,可以直接推导出拟合直线 y={\color{red}a}x+\color{red}b 的 \color{red}a,b,而且许多非线性的问题也可以转化为线性问题来解决,所以得到了广泛的应用

2.1 模型假设

  假设我们有 n 组二维数据点\color{red}(x_1,y_1),(x_2,y_2)....(x_n,y_n),我们的目标是找到一条直线y={\color{red}a}x+\color{red}b ,其中 a 为直线斜率,b为截距,使得这条直线尽可能接近所有数据点

2.2 定义误差函数

        对于每个数据点\color{red}(x_i,y_i),预测值为 \hat y_i = ax_i+b,则误差为:

e_i = y_i - \hat y_i = y_i - (ax_i+b)

        目标:最小化所有数据点的误差平方和:

        最终目标就是找到使总误差 S 最小的 a、b,这可以通过 S 分别对 a、b 求偏导,并令偏导数 = 0 来实现

2.3 求偏导并解方程

        为了找到使总误差 S 最小的 a、b,可以对 ab 分别求偏导,令导数为 0 ,得到方程组如下:

        整理后得到如下方程:

        注:\sum = \sum_{i=1}^n 

        通过代数运算消元,解得:

🆗,这样就能拟合出有 n 组二维数据点\color{red}(x_1,y_1),(x_2,y_2)....(x_n,y_n) 的一条直线 y={\color{red}a}x+\color{red}b。可以看到,整个过程非常简单,只需要数学计算即可

2.4 案例演示

2.4.1 手工计算实例

        假设有以下数据点:

(1,2),(2,3),(3,5),(4,4)

        计算中间项: 

        代入公式: 

        拟合直线: 

y={\color{red}0.8} \;x+\color{red}1.5

2.4.2 使用Python实现 

我们将 2.4.1 中的手工计算例子使用 Python 来实现,并作可视化

import numpy as np
import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"] = ["SimHei"]  #设置字体,可以显示中文
plt.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 1. 生成数据
x = np.array([1, 2, 3, 4])
y = np.array([2, 3, 5, 4])# 2. 最小二乘法实现
def linear_regression(x, y):"""最小二乘法线性回归参数:x: 数据点的x坐标值y: 数据点的y坐标值返回:(a, b): 斜率,截距"""n = len(x)sum_x = np.sum(x)sum_y = np.sum(y)sum_x2 = np.sum(x ** 2)sum_xy = np.sum(x * y)# 计算斜率a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x ** 2)b = (sum_y - a * sum_x) / nreturn (a, b)#执行回归计算,a:拟合出来的斜率 b:拟合出来的截距
a, b = linear_regression(x, y)# 3. 可视化结果
plt.figure(figsize=(10, 6), dpi=100)#绘制数据点
plt.scatter(x, y,color='steelblue',  # 点颜色s=90,  # 点大小edgecolor='white',  # 边缘颜色linewidth=1.5,  # 边缘线宽label='数据点',zorder=1)  # 绘制层级#绘制拟合直线
x_fit = np.array([min(x) - 1, max(x) + 1])  # 延长拟合线范围
y_fit = a * x_fit + b
plt.plot(x_fit, y_fit,color='crimson',linewidth=3,label=f'拟合结果 ($y={a:.2f}x + {b:.2f}$)',zorder=1)#添加图表元素
plt.title('最小二乘法线性回归演示', fontsize=14, pad=20)
plt.xlabel("X 值", fontsize=12)
plt.ylabel("Y 值", fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.legend(fontsize=12, frameon=True, shadow=True)# 设置坐标轴范围
plt.xlim(min(x) - 1, max(x) + 1)
plt.ylim(min(y) - 2, max(y) + 2)# 显示图表
plt.tight_layout()
plt.show()

运行结果:

3.梯度下降法

3.1 前言(梯度下降算法原理介绍)

梯度下降(Gradient Descent)是一种迭代优化算法,通过不断沿损失函数负梯度方向更新参数,逐步逼近最优解。对于线性回归问题,需最小化均方误差(MSE):

其中 \color{red}a 为斜率,\color{red}b 为截距

3.2 模型假设

  假设我们有 n 组二维数据点\color{red}(x_1,y_1),(x_2,y_2)....(x_n,y_n),我们的目标是找到一条直线y={\color{red}a}x+\color{red}b ,其中 a 为直线斜率,b 为截距,使得这条直线尽可能接近所有数据点

3.3 定义损失函数

  • 对于每个数据点 \color{red}(x_i,y_i),我们希望拟合的直线为 y={\color{red}a}x+\color{red}b

  • 定义预测值为:\hat y_i = ax_i+b

  • 定义平方误差项为: e_i^2=(y_i-\hat y_i)^2 = (y_i-(ax_i+b))^2

  • 总的误差平方和(损失函数)为:

3.4 梯度计算

 为了使用梯度下降法,需要计算损失函数\color{red}J(a,b) 对参数a和b的偏导数(梯度):

  • a 的偏导数:

  • b 的偏导数

3.5 更新参数

通过梯度下降法,我们可以更新参数 a、b,使其朝着减少损失函数的方向移动。更新规则为:

其中 \color{red}\alpha 为学习率,控制更新步长

        重复计算梯度并更新参数,直到达到预设的迭代次数或损失函数的变化小于某个阈值

        理论上,随着迭代次数的增加,损失函数\color{red}J(a,b)会逐渐减小,最终收敛到损失函数的局部最小值,得到最佳的斜率 a、截距 b

🆗,以上就是梯度下降法的整个流程,下来我们会用 Python 举一个案例并作可视化

 3.6 代码演示

import numpy as np
import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"] = ["SimHei"]  #设置字体,可以显示中文
plt.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 固定随机种子保证可重复性
np.random.seed(42)# 生成模拟数据
# 生成100个[0-10]区间均匀分布的值,作为数据点的x坐标值
x = np.linspace(0, 10, 100)# 生成理想的线性关系: y = 2.5x + 1.8
true_a = 2.5  #真实斜率
true_b = 1.8  #真实截距
y = true_a * x + true_b# 添加高斯噪声来模拟真实数据
noise = np.random.normal(0,2,size=len(x))
y = y + noise #作为数据点的y坐标点# 梯度下降参数
alpha = 0.01  # 学习率
iterations = 2000  # 迭代次数# 参数初始化
a, b = 0.0, 0.0
n = len(x)# 记录训练过程
history = {'a': [], 'b': [], 'loss': []}# 梯度下降迭代
for i in range(iterations):# 预测值y_pred = a * x + b# 计算梯度grad_a = (-2 / n) * np.sum(x * (y - y_pred))grad_b = (-2 / n) * np.sum(y - y_pred)# 更新参数a -= alpha * grad_ab -= alpha * grad_b# 记录损失值loss、参数a、参数bloss = (1/n) * np.sum((y - y_pred) ** 2)history['a'].append(a)history['b'].append(b)history['loss'].append(loss)# 最终结果
print(f"真实参数: a={true_a}, b={true_b}")
print(f"拟合结果: a={a:.2f}, b={b:.2f}")# 可视化
plt.figure(figsize=(12, 4))# 损失函数下降曲线
plt.subplot(131)
plt.plot(history['loss'], color='darkorange')
plt.xlabel('Iteration')
plt.ylabel('Loss')
plt.title('Loss Function Convergence(损失函数下降曲线)')# 参数变化轨迹
plt.subplot(132)
plt.plot(history['a'], history['b'], marker='o', markersize=2)
plt.xlabel('a')
plt.ylabel('b')
plt.title('Parameter Trajectory(参数变化轨迹)')# 最终拟合效果
plt.subplot(133)
plt.scatter(x, y, alpha=0.6, label='数据点')
plt.xlabel('X')
plt.ylabel('Y')
plt.plot(x, a * x + b, color='crimson', lw=3,label=f'拟合结果: y={a:.2f}x + {b:.2f}')
plt.plot(x, true_a * x + true_b, 'k--', label=f'True: y={true_a:.2f}x + {true_b:.2f}')
plt.title('最小二乘法梯度下降演示')plt.legend()
plt.tight_layout()
plt.show()

运行结果:

可以看到,经过 2000 次的迭代,最终的拟合结果是 y={\color{red}2.53}\;x+\color{red}1.45,非常接近 True     

🆗,以上就是本文最小二乘法拟合直线的所有内容,后续如果学习到其他方法还会继续更新,整个流程走下来感觉还是挺有趣的 

4.其他方法

待更新.... 

相关文章:

最小二乘法拟合直线,用线性回归法、梯度下降法实现

参考笔记: 最小二乘法拟合直线,多个方法实现-CSDN博客 一文让你彻底搞懂最小二乘法(超详细推导)-CSDN博客 目录 1.问题引入 2.线性回归法 2.1 模型假设 2.2 定义误差函数 2.3 求偏导并解方程 2.4 案例实例 2.4.1 手工计算…...

机器学习 day04

文章目录 前言一、线性回归的基本概念二、损失函数三、最小二乘法 前言 通过今天的学习,我掌握了机器学习中的线性回归的相关基本概念,包括损失函数的概念,最小二乘法的理论与算法实现。 一、线性回归的基本概念 要理解什么是线性回归&…...

数据分析_Python

1 分析内容 1.1 数据的整体概述 提供数据集的基本信息,包括数据量、时间跨度、地理范围和主要字段. import pandas as pd# 创建示例数据 data {姓名: [张三, 李四, 王五, 赵六, 钱七, 孙八, 周九, 吴十],年龄: [25, 30, 35, 40, 45, 50, 55, 60],性别: [男, 男, 女, 女, 男,…...

精益数据分析(63/126):移情阶段的深度潜入——从用户生活到产品渗透的全链路解析

精益数据分析(63/126):移情阶段的深度潜入——从用户生活到产品渗透的全链路解析 在创业的移情阶段,成功的关键不仅在于发现用户的表面需求,更在于深入潜入用户的日常生活,理解其行为背后的真实动机与场景…...

【MySQL】第五弹——表的CRUD进阶(三)聚合查询(上)

文章目录 🌅聚合函数🌊1.COUNT();统计所有行🌊2. SUM(列名); 求和🌊3. AVG() 求平均🌊4. MAX(),MIIN() 🌅分组查询🌊GROUP BY 子句🌊HAVING 🌅联合查询🌊联合…...

英语学习5.16

recede 【动词】 👉 关键词:后退、减弱、退去 ✅ 释义: 后退,远离 指物体逐渐远离、移开或变得不明显,常用于描述水面、声音、军队、头发线等的“退却”或“后移”。 如:The floodwaters receded.&#x…...

创建react工程并集成tailwindcss

1. 创建工程 npm create vite admin --template react 2.集成tailwndcss 打开官网跟着操作一下就行。 Installing Tailwind CSS with Vite - Tailwind CSS...

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题 (二)A 模块基础设施设置/安全加固(200 分)A-1 任务一登录安全加固(Windows,Linux)A-2 任务二 Nginx 安全策略&…...

STM32IIC实战-OLED模板

STM32IIC实战-OLED模板 一,SSD1306 控制芯片1, 主要特性2,I2C 通信协议3, 显示原理4, 控制流程5, 开发思路 二,HAL I2C API 解析I2C 相关 API1,2,3,4&#xf…...

BMVC2023 | 多样化高层特征以提升对抗迁移性

Diversifying the High-level Features for better Adversarial Transferability 摘要-Abstract引言-Introduction相关工作-Related Work方法-Methodology实验-Experiments结论-Conclusion 论文链接 GitHub链接 本文 “Diversifying the High-level Features for better Adve…...

C++ deque双端队列、deque对象创建、deque赋值操作

在deque中,front()是头部元素,back()指的是尾部元素。begin()是指向头部的迭代器,end()是指向尾部的下一个元素的迭代器。 push_front 头部进行插入 pop_front 尾部进行删除 push_back 尾部进行插入 pop_back 尾部进行删除 deque如果同时…...

【论文阅读】人脸修复(face restoration ) 不同先验代表算法整理2

文章目录 一、前述二、不同的先验及代表性论文2.1 几何先验(Geometric Prior)2.2 生成式先验(Generative Prior)2.3 codebook先验(Vector Quantized Codebook Prior)2.4 扩散先验 (Diffusion Pr…...

2025年渗透测试面试题总结-百度面经(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 百度面经 百度安全工程师面试深度复盘与优化指南 一、项目经验反思与优化策略 二、技术问题深度解析 …...

muduo库TcpConnection模块详解——C++

muduo库中的TcpConnection模块详解 TcpConnection是muduo库中处理TCP连接的核心模块,负责管理单个TCP连接的生命周期、数据读写、状态转换以及事件回调。每个TCP连接对应一个TcpConnection对象,其设计体现了高性能、线程安全和灵活回调的特点。 一、核心…...

aksharetools:大模型智能体框架agno可直接获取A股金融数据

原创内容第889篇,专注智能量化投资、个人成长与财富自由。 今天说说金融智能体开发。 智能体开发需要一个多agent框架。这样的框架,现在太多了,langchain, langgraph,autogen,crewai等等,还有各种低代码平…...

使用Maven部署WebLogic应用

使用Maven部署WebLogic应用 在Maven项目中部署应用到WebLogic服务器可以通过以下几种方式实现&#xff1a; 1. 使用WebLogic Maven插件 (官方推荐) Oracle提供了官方的WebLogic Maven插件&#xff0c;这是最直接的部署方式。 基本配置 <build><plugins><pl…...

[Java][Leetcode simple] 13. 罗马数字转整数

一、自己想的 只有提到的六种情况是-&#xff0c;其他都是 public int romanToInt1(String s) {int res 0;int n s.length();Map<Character, Integer> map new HashMap<>();map.put(I, 1);map.put(V, 5);map.put(X, 10);map.put(L, 50);map.put(C, 100);map.pu…...

【论文阅读】针对BEV感知的攻击

Understanding the Robustness of 3D Object Detection with Bird’s-Eye-View Representations in Autonomous Driving 这篇文章是发表在CVPR上的一篇文章&#xff0c;针对基于BEV的目标检测算法进行了两类可靠性分析&#xff0c;即恶劣自然条件以及敌对攻击。同时也提出了一…...

Ansible模块——设置软件仓库和安装软件包

设置软件仓库 ansible.builtin.rpm_key ansible.builtin.rpm_key 用于在 Fedora/RHEL 上导入或移除 GPG 公钥。 参数名 类型 默认值 说明 fingerprintstrnull 指定公钥的完整指纹&#xff08;long-form&#xff09;。在导入前会比对公钥是否匹配此指纹&#xff0c;增强安全…...

基于CentOS7制作OpenSSL 1.1的RPM包

背景&#xff1a;CentOS7 已经不再维护了&#xff0c;有时候需要升级某些组件&#xff0c;网上却没有相关的资源了。尤其是制作OpenSSH 9.6 的RPM包&#xff0c;就会要求OpenSSL为1.1的版本。基于此&#xff0c;还是自己制作吧&#xff0c;以下是踩坑过程。 1、官网提供的源码包…...

【Element UI】表单及其验证规则详细

Form表单 Form表单验证1. 使用方法2. rule参数3. validator回调函数异步服务器验证 Form表单验证 Form组件提供了表单验证的功能&#xff0c;需要通过rules属性传入约定的验证规则&#xff0c;并将Form-Item的prop属性设置为需校验的字段名 1. 使用方法 结构&#xff1a; &…...

使用 Python 打造一个强大的文件系统结构创建器

本文将深入分析一个基于 wxPython 的文件系统结构创建器程序&#xff0c;展示如何通过 CustomTreeCtrl 组件实现文件夹和文件的可视化管理&#xff0c;并提供添加、删除、导入、清空以及创建文件系统结构的强大功能。这个程序不仅适合开发者快速构建文件系统原型&#xff0c;还…...

面试真题 - 高并发场景下Nginx如何优化

Nginx是一款高性能的Web服务器和反向代理服务器&#xff0c;以其轻量级、高并发处理能力和稳定性闻名。在面对高并发场景时&#xff0c;合理的配置与优化策略至关重要&#xff0c;以确保服务的稳定性和响应速度。 以下是针对Nginx进行高并发优化的一些关键配置和策略&#xff…...

学习笔记:黑马程序员JavaWeb开发教程(2025.4.6)

12.4 登录校验-JWT令牌-介绍 JWT&#xff08;JSON Web Token&#xff09; 简洁是指JWT是一个简单字符串&#xff0c;自包含指的是JWT令牌&#xff0c;看似是一个随机字符串&#xff0c;但是可以根据需要&#xff0c;自定义存储内容 Header是JSON数据格式&#xff0c;原始JSO…...

机器学习——逻辑回归

一、逻辑回归概念点 逻辑回归&#xff08;Logistic Regression&#xff09;是一种广泛使用的统计分析方法和机器学习算法&#xff0c;主要用于处理二分类问题&#xff08;即因变量为二元类别&#xff0c;如0和1、是和否等&#xff09;。尽管名字中有“回归”二字&#xff0c;但…...

服务间的“握手”:OpenFeign声明式调用与客户端负载均衡

现在&#xff0c;假设我们有一个新的order-service&#xff0c;它在创建订单时需要获取用户信息。 如果order-service直接硬编码user-service的IP和端口进行调用&#xff0c;会面临以下问题&#xff1a; 缺乏弹性: 如果user-service实例的IP或端口发生变化&#xff08;在云环境…...

蓝桥杯11届国B 答疑

题目描述 有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。 老师可以安排答疑的顺序&#xff0c;同学们要依次进入老师办公室答疑。 一位同学答疑的过程如下&#xff1a; 首先进入办公室&#xff0c;编号为 i 的同学需要 si​ 毫秒的时间。然后同学问问题老…...

【单机版OCR】清华TH-OCR v9.0免费版

今天向大家介绍一款非常好用的单机版OCR图文识别软件&#xff0c;它不仅功能多&#xff0c;识别能力强&#xff0c;而且还是免费使用的。OCR软件为什么要使用单机版&#xff0c;懂得都懂&#xff0c;因为如果使用在线识别的OCR软件&#xff0c;用户需要将文档上传互联网服务器的…...

蓝牙耳机什么牌子好?倍思值得冲不?

最近总被问“蓝牙耳机什么牌子好”&#xff0c;作为踩过无数坑的资深耳机党&#xff0c;必须安利刚入手的倍思M2s Pro主动降噪蓝牙耳机&#xff01;降噪、音质、颜值全都在线&#xff0c;性价比直接拉满。 -52dB降噪&#xff0c;通勤摸鱼神器 第一次开降噪就被惊到&#xff01…...

Java卡与SSE技术融合实现企业级安全实时通讯

简介 在数字化转型浪潮中,安全与实时数据传输已成为金融、物联网等高安全性领域的核心需求。本文将深入剖析东信和平的Java卡权限分级控制技术与浪潮云基于SSE的大模型数据推送技术,探索如何将这两项创新技术进行融合,构建企业级安全实时通讯系统。通过从零到一的开发步骤,…...

使用Spring Boot和Spring Security构建安全的RESTful API

使用Spring Boot和Spring Security构建安全的RESTful API 引言 在现代Web开发中&#xff0c;安全性是构建应用程序时不可忽视的重要方面。本文将介绍如何使用Spring Boot和Spring Security框架构建一个安全的RESTful API&#xff0c;并结合JWT&#xff08;JSON Web Token&…...

Win11下轻松搭建wiki.js,Docker.desktop部署指南(mysql+elasticsearch+kibana+wiki.js)

Docker.desktop部署wiki.js指南 前言环境和要求介绍提前准备 1. elasticsearch1.1 部署容器1.2 参数说明1.3 验证容器是否部署成功 2. kibana2.1 部署容器2.2 验证是否部署成功2.3 安装IK分词器 3. MySql3.1 部署容器3.2 增加数据库和wiki.js所需要的账号 4. wiki.js4.1 部署容…...

【JavaWeb】MySQL

1 引言 1.1 为什么学&#xff1f; 在学习SpringBootWeb基础知识(IOC、DI等)时&#xff0c;在web开发中&#xff0c;为了应用程序职责单一&#xff0c;方便维护&#xff0c;一般将web应用程序分为三层&#xff0c;即&#xff1a;Controller、Service、Dao 。 之前的案例中&am…...

数据库实验报告 数据定义操作 3

实验报告&#xff08;第3次&#xff09; 实验名称 数据定义操作 实验时间 10月12日1-2节 一、实验内容 1、本次实验是用sql语句创建库和表&#xff0c;语句是固定的&#xff0c;要求熟记这些sql语句。 二、源程序及主…...

寻找树的中心(重心)

题目&#xff1a; 思路&#xff1a; “剥洋葱”&#xff1a;每次剥掉一层叶子结点&#xff0c;直到最后剩余不多于2个节点&#xff0c;这些节点就是树的中心&#xff08;重心&#xff09;。 解释&#xff1a; 1、根据图论的知识可以知道&#xff0c;一颗树的中心&#xff08…...

Oracle 高水位线(High Water Mark, HWM)

1. 高水位线&#xff08;HWM&#xff09;的定义 基本概念&#xff1a;HWM 是 Oracle 数据库中一个段&#xff08;如表、索引&#xff09;中已分配并被格式化&#xff08;Formatted&#xff09;的存储空间的最高位置。它标识了该段历史上曾达到的最大数据块使用量。 物理意义&a…...

Redis学习专题(二)事务和锁机制

目录 引言 1、事务三特性 2、事务相关指令 &#xff1a;Multi、Exec、discard 快速入门 注意&#xff1a; 3、事务冲突 解决办法&#xff1a; 1.悲观锁 2.乐观锁 3.watch & unwatch 引言 Redis 的事务是什么? 1、Redis 事务是一个单独的隔离操作&#xff1a;事…...

多平台!像素艺术的最佳选择 , 开源像素画工具

项目简介 如果你喜欢作像素风格的游戏或动画&#xff0c;那么这款Pixelorama或许是你的好帮手。它是一款免费开源的像素画编辑器&#xff0c;功能丰富&#xff0c;操作便捷&#xff0c;支持多平台使用&#xff08;Windows、macOS、Linux&#xff09;。无论你是像素新手还是老手…...

使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南

环境配置与项目搭建 1. Gradle 依赖配置 // build.gradle (Module) android {buildFeatures {compose true}composeOptions {kotlinCompilerExtensionVersion "1.5.3"} }dependencies {def wear_compose_version "1.2.0"implementation "androidx.…...

JavaScript【5】DOM模型

1.概述&#xff1a; DOM (Document Object Model)&#xff1a;当页面被加载时&#xff0c;浏览器会创建页面的文档对象模型&#xff0c;即dom对象&#xff1b;dom对象会被结构化为对象树&#xff0c;如一个HTML文档会被分为head&#xff0c;body等部分&#xff0c;而每个部分又…...

【诊所电子处方专用软件】佳易王个体诊所门诊电子处方开单管理系统:零售药店电子处方服务系统#操作简单#诊所软件教程#药房划价

一、软件试用版资源文件下载说明 &#xff08;一&#xff09;若您想体验软件功能&#xff0c;可通过以下方式获取软件试用版资源文件&#xff1a; 访问头像主页&#xff1a;进入作者头像主页&#xff0c;找到第一篇文章&#xff0c;点击文章最后的卡片按钮&#xff0c;即可了…...

【OpenCV】帧差法、级联分类器、透视变换

一、帧差法&#xff08;移动目标识别&#xff09;&#xff1a; 好处&#xff1a;开销小&#xff0c;不怎么消耗CPU的算力&#xff0c;对硬件要求不高&#xff0c;但只适合固定摄像头 1、优点 计算效率高&#xff0c;硬件要求 响应速度快&#xff0c;实时性强 直接利用连续帧…...

OpenCV 特征检测全面解析与实战应用

在计算机视觉领域&#xff0c;特征检测是从图像中提取关键信息的核心技术&#xff0c;这些关键特征是图像匹配、目标识别、场景理解等复杂任务的基础。OpenCV 作为计算机视觉领域最受欢迎的开源库之一&#xff0c;提供了丰富且高效的特征检测算法。本文将深入介绍 OpenCV 中多种…...

AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月17日第80弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀6-8个和值&#xff0c;可以做到100-300注左右。 (1)定…...

IDEA反斜杠路径不会显示JUnit运行的工作目录配置问题

1. 当在IDEA基准目录下创建junit-reflect-annotation-proxy-app\\src\\data.txt时&#xff0c;如果是Mac电脑&#xff0c;这种\\文件路径时&#xff0c;IDEA里面不会显示&#xff0c;但在Finder下会显示&#xff0c;是直接创建了文件名为junit-reflect-annotation-proxy-app\sr…...

Linux517 rsync同步 rsync借xinetd托管 配置yum源回顾

计划测试下定时服务 同步成功 是否为本地YUM源内容太少&#xff1f;考虑网络YUM源 单词拼错了 计划后面再看下 MX安装 参考 计划回顾配置YUM源 配置本地YUM源配置外网YUM源配置仓库YUM源&#xff08;不熟&#xff09; 参考 参考阿里云 配置完毕 本地yum源配置 先备份 再…...

【论文阅读】A Survey on Multimodal Large Language Models

目录 前言一、 背景与核心概念1-1、多模态大语言模型&#xff08;MLLMs&#xff09;的定义 二、MLLMs的架构设计2-1、三大核心模块2-2、架构优化趋势 三、训练策略与数据3-1、 三阶段训练流程 四、 评估方法4-1、 闭集评估&#xff08;Closed-set&#xff09;4-2、开集评估&…...

大型语言模型中的QKV与多头注意力机制解析

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

React Flow 节点事件处理实战:鼠标 / 键盘事件全解析(含节点交互代码示例)

本文为《React Agent&#xff1a;从零开始构建 AI 智能体》专栏系列文章。 专栏地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。项目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代码示​例与实战源&#xff09;。完整介绍…...

AIGC在电商行业的应用:革新零售体验

AIGC在电商行业的应用&#xff1a;革新零售体验 引言 人工智能生成内容&#xff08;AIGC&#xff09;正在深刻改变电商行业的格局。从个性化推荐到智能客服&#xff0c;从产品描述生成到虚拟试衣&#xff0c;AIGC技术正在为电商平台带来前所未有的创新和效率提升。本文将深入探…...