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

最小二乘法拟合平面(线性回归法、梯度下降、PCA法)

参考笔记:

Open3D 最小二乘拟合平面(直接求解法)【2025最新版】_python open3d已知平面方程绘制平面-CSDN博客


目录

1.前言 

2.线性回归法

2.1 模型假设

2.2 定义误差函数

2.3 求偏导并解方程

2.4 解方程

2.5 案例演示 

2.5.1 手工计算实例

2.5.2 使用Python实现

3.梯度下降法

4.PCA法

5.SVD分解法


1.前言 

在阅读本文之前的前置内容是:最小二乘法拟合直线,可以看我写的另一篇博客:

最小二乘法拟合直线,用线性回归法、梯度下降法实现-CSDN博客文章浏览阅读222次,点赞7次,收藏4次。对于每个数据点,预测值为最小化所有数据点的误差平方和:最终目标就是找到使总误差S最小的a、b,这可以通过S分别对a、b求偏导,并令偏导数 = 0来实现梯度下降(Gradient Descent)是一种迭代优化算法,通过不断沿损失函数负梯度方向更新参数,逐步逼近最优解。 https://blog.csdn.net/m0_55908255/article/details/148018256?spm=1011.2415.3001.5331在学习了最小二乘法拟合直线之后,我们可以将最小二乘法推广至三维空间,在三维空间中为 n 组三维数据点 \color{red}(x_1,y_1,z_1),(x_2,y_2,z_2)....(x_n,y_n,z_n)  拟合出一个平面 z = {\color{red}a}x+{\color{red}b}y+{\color{red}c},使得所有数据点到平面的 垂直距离平方和 最小。如下图所示:

2.线性回归法

线性回归法也称为直接法,计算简单,可以直接推导出拟合平面方程 z = {\color{red}a}x+{\color{red}b}y+{\color{red}c} 的 a、b、c,应用比较广泛

2.1 模型假设

        假设我们有 n 组三维数据点 \color{red}(x_1,y_1,z_1),(x_2,y_2,z_2)....(x_n,y_n,z_n),我们的目标是找到一个平面 z = {\color{red}a}x+{\color{red}b}y+{\color{red}c} ,使得所有数据点到平面的 垂直距离平方和 最小

2.2 定义误差函数

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

                e_i=z_i-\hat z_i = z_i-(ax_i+by_i+c)

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

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

2.3 求偏导并解方程

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

        将方程组展开并整理为矩阵形式: 

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

2.4 解方程

① 计算中间项:

  • \sum x_i,\sum y_i,\sum y_i

  • \sum x_i^2,\sum y_i^2,\sum x_iy_i

  • \sum x_iz_i,\sum y_iz_i

全是一些常数,直接进行计算即可

② 构建系数矩阵和常数向量:

③ 解方程组:

\begin{bmatrix} a \\ b \\ c \end{bmatrix}=A^{-1}B

④ 拟合平面:

z = {\color{red}a}x+{\color{red}b}y+{\color{red}c}

当然,解方程时也可以使用克拉默法则,这样就不需要求 A 的逆矩阵,如下:

2.5 案例演示 

2.5.1 手工计算实例

        假设有以下数据点:

(1, 2, 3), (2, 1, 4), (3, 3, 7), (4, 2, 6), (5, 2, 7), (4, 6, 11)

        计算中间项:

       构建方程并代入数值:

        解方程组可得:

a=0.889,\;\;b=1.162,\;\;c=0.42

        最终拟合的平面方程: 

z = {\color{red}a}x+{\color{red}b}y+{\color{red}c}=0.0889\;x +1.162\;y+0.42

🆗,以上就是整个手工计算过程,还是比较简单的,但需要一些《线性代数》的相关基础

2.5.2 使用Python实现

我们将 2.5.1 中的手工计算例子使用 Python 来实现,并作可视化,代码如下:

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  #设置字体,可以显示中文
plt.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 构造三维数据点(6个)
points = np.array([[1, 2, 3],[2, 1, 4],[3, 3, 7],[4, 2, 6],[5, 2, 7],[4, 6, 11],
])x = points[:, 0]
y = points[:, 1]
z = points[:, 2]
n = points.shape[0]#数据点个数# ------------------------构建系数矩阵和常数向量-----------------------------
A = np.array([[sum(x ** 2), sum(x * y), sum(x)],[sum(x * y), sum(y ** 2), sum(y)],[sum(x), sum(y), n]])B = np.array([[sum(x * z)],[sum(y * z)],[sum(z)]])# 方程求解,np.linalg.solve(A,B)表示求 AX = B 的解X
X = np.linalg.solve(A, B)
print('平面拟合结果为:z = %.3f * x + %.3f * y + %.3f' % (X[0], X[1], X[2]))a,b,c = X[0],X[1],X[2]# 可视化
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')# 设置坐标轴和标题
ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('Y', fontsize=12)
ax.set_zlabel('Z', fontsize=12)
ax.set_title('最小二乘法线性回归拟合平面', fontsize=14)min_pt = np.amin(points, axis=0)  # 获取坐标最小值
max_pt = np.amax(points, axis=0)  # 获取坐标最大值# 绘制数据点
ax.scatter(x, y, z,#点坐标c='red',#点颜色s=60, #点大小label='数据点')# 生成网格点绘制平面
xx = np.linspace(min_pt[0], max_pt[0], 100)
yy = np.linspace(min_pt[1], max_pt[1], 100)
xx, yy = np.meshgrid(xx,yy)#生成网格
zz = a * xx + b * yy + c# 绘制平面
ax.plot_surface(xx, yy, zz,color= "blue",#平面颜色alpha=0.5,#透明度 0~1label=f'拟合平面')plt.show()

运行结果: 

3.梯度下降法

梯度下降法的实现可以参考我的另一篇博客,最小二乘法拟合直线里的讲解:

最小二乘法拟合直线,用线性回归法、梯度下降法实现-CSDN博客文章浏览阅读222次,点赞7次,收藏4次。对于每个数据点,预测值为最小化所有数据点的误差平方和:最终目标就是找到使总误差S最小的a、b,这可以通过S分别对a、b求偏导,并令偏导数 = 0来实现梯度下降(Gradient Descent)是一种迭代优化算法,通过不断沿损失函数负梯度方向更新参数,逐步逼近最优解。 https://blog.csdn.net/m0_55908255/article/details/148018256?spm=1011.2415.3001.5331思路是完全一致的,这里就不再赘述了

4.PCA法拟合平面

PCA 全称 Principal Components Analysis,即主成分分析技术。大家应该都听过这个名字,但对于其原理可能不太熟悉,说实话我也不懂它的原理,所以这一块我就将PCA法拟合平面的具体流程,后面会举手工计算例子和Python实现的例子

另外,利用PCA法拟合平面还可以求出所拟合平面的法向量

4.1 最小二乘法 vs PCA 拟合平面的本质区别

在开始 PCA 拟合平面的具体过程前,必须先明确两种方法的根本差异:

最小二乘法 (线性回归)PCA (主成分分析)
优化目标最小化因变量 (Z) 的预测误差最小化数据点到平面的垂直距离
几何意义垂直Z轴方向的误差平方和真正的几何最短距离
算法优势更适合预测任何(给定xy预测z)PCA更能反映数据的真实空间分布

4.2 PCA算法流程

        ① 数据准备

        给定 n 个三维数据点 \color{red}(x_1,y_1,z_1),(x_2,y_2,z_2)....(x_n,y_n,z_n),将其拼成一个矩阵X表示,如下:

X = \begin{bmatrix} x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ \vdots & \vdots & \vdots \\ x_n & y_n & z_n \end{bmatrix}

        ② 中心化数据

        求出x维的均值 \color{red}\bar{x},y维的均值 \color{red}\bar{y},z维的均值\color{red}\bar{z},每一维的数据都对应减去该维的均值,此过程叫做中心化数据,也叫特征中心化,得到矩阵 \color{red}X_{Centered},如下:

X_{centered} = \begin{bmatrix} x_1-\bar{x} & y_1-\bar{y} & z_1-\bar{z} \\ x_2-\bar{x} & y_2-\bar{y} & z_2-\bar{z} \\ \vdots & \vdots & \vdots \\ x_n-\bar{x} & y_n-\bar{y} & z_n-\bar{z} \\ \end{bmatrix}

        ③ 计算协方差矩阵 \color{red}C

        \mathbf{C} = \frac{1}{n-1} \mathbf{X}_{\text{centered}}^T \mathbf{X}_{\text{centered}}=\begin{bmatrix} c_{11} & c_{12} & c_{13} \\ c_{21} & c_{22} & c_{23} \\ c_{31} & c_{32} & c_{33} \end{bmatrix}

        C 为 3\times 3 矩阵 

        ④ 计算特征值和特征向量:

        解特征方程 C-\lambda E =0,将的求出特征值按大到小排序,分别是 \color{red}\lambda_1,\lambda_2,\lambda_3 ,其对应的特征向量 \color{red}\xi _1,\;\xi _2,\;\xi _3

        ⑤ 选择平面法向量,得出拟合平面:

        平面法向量:最小特征值 \color{red}\lambda_3 对应的特征向量 \color{red}\xi _3 即为拟合平面的法向量,\color{red}\xi _3 的分量即为 a、b、c

        拟合平面方程:

 a\;(x-\bar{x})+b\;(y-\bar{y})+c\;(z-\bar{z})=0

其中,\color{red}\bar{x},\;\bar{y},\;\bar{z} 即为前面所求的均值

🆗,以上就是整个PCA的算法流程,其实还是比较清晰的,但要搞懂原理还是有点难的,原理部分以后再说吧

4.2 案例演示

4.2.1 手工计算实例

        ① 数据准备

        假设有以下数据点:

(0,0,0), (1, 0,1), (0, 1, 1), (1, 1, 2)

        将其拼接成一个矩阵 \color{red}X 表示,如下:

X = \begin{bmatrix} x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ x_3 & y_3 & z_3 \\ x_4 & y_4 & z_4 \end{bmatrix} = \begin{bmatrix} 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 2 \end{bmatrix}

        ② 中心化数据

        计算均值:

{\color{red}\bar{x}} = \frac{0 + 1 + 0 + 1}{4} = 0.5, \quad {\color{red}\bar{y}} = \frac{0 + 0 + 1 + 1}{4} = 0.5, \quad {\color{red}\bar{z}}= \frac{0 + 1 + 1 + 2}{4} = 1.0

        中心化数据,X --> \color{red}X_{centered}

{\color{red}X_{centered}} = \begin{bmatrix} 0-0.5 & 0-0.5 & 0-1 \\ 1-0.5 & 0-0.5 & 1-1 \\ 0-0.5 & 1-0.5 & 1-1 \\ 1-0.5 & 1-0.5 & 2-1 \end{bmatrix} = \begin{bmatrix} -0.5 & -0.5 & -1 \\ \;0.5 & -0.5 & 0 \\ -0.5 & \;0.5 & 0 \\ -0.5 & \;0.5 & 1 \end{bmatrix}

        ③ 计算协方差矩阵 \color{red}C

\mathbf{C} = \frac{1}{n-1} \mathbf{X}_{\text{centered}}^T \mathbf{X}_{\text{centered}}\\ =\frac{1}{3} \begin{bmatrix} -0.5 & 0.5 & -0.5 & -0.5\\ \;-0.5 & -0.5 & 0.5 & 0.5\\ -1 & \;0 & 0 &1\\ \end{bmatrix} \begin{bmatrix} -0.5 & -0.5 & -1 \\ \;0.5 & -0.5 & 0 \\ -0.5 & \;0.5 & 0 \\ -0.5 & \;0.5 & 1 \end{bmatrix} \\ = \begin{bmatrix} \frac{1}{3} & 0 & \frac{1}{3} \\ 0 & \frac{1}{3} & \frac{1}{3} \\ \frac{1}{3} & \frac{1}{3} & \frac{2}{3} \\ \end{bmatrix}

        ④ 计算特征值和特征向量:

        解特征方程 C-\lambda E =0,特征值:

         \lambda_1=1,\;\lambda_2=\frac{1}{3},\;\lambda_3=0 

         最小特征值 \color{red}\lambda_3=0 对应的特征向量(作为拟合平面的法向量)为:

\xi_3 = \begin{bmatrix} -1\\ -1\\ 1 \end{bmatrix}

          ⑤ 选择平面法向量,得出拟合平面:

        平面法向量:最小特征值 \color{red}\lambda_3 对应的特征向量 \color{red}\xi _3 即为拟合平面的法向量,因此:

        \color{red}a=-1,\;b=-1,\;c=1

        拟合平面方程:

所以PCA法最终拟合的平面方程为 \color{red}z = x + y,该平面的法向量为:

\xi_3 = \begin{bmatrix} -1\\ -1\\ 1 \end{bmatrix}

🆗,以上就是整个手工计算过程,不算难,需要一些《线性代数》的相关基础

4.2.2 使用 Python 实现 

我们将 4.2.1 中的手工计算例子使用 Python 来实现,并作可视化,代码如下:

import numpy as np
import matplotlib.pyplot as pltplt.rcParams["font.sans-serif"] = ["SimHei"]  #设置字体,可以显示中文
plt.rcParams["axes.unicode_minus"] = False  # 正常显示负号# 1,数据准备:构造三维数据点
points = np.array([[0, 0, 0],[1, 0, 1],[0, 1, 1],[1, 1, 2],
])# 2.中心化数据
centroid = np.mean(points, axis=0) #计算均值 [μ_x, μ_y, μ_z]
centered_points = points - centroid  #中心化数据# 3.计算协方差矩阵C
cov_matrix = np.cov(centered_points.T)  #计算协方差矩阵C (3x3)# 4.解特征方程,计算特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(cov_matrix) #解特征方程
#eigenvalues:特征向量
#eigenvactors:特征向量# 5.选择平面向量,得出拟合平面方程
min_eigen_idx = np.argmin(eigenvalues)  # 找到最小特征值索引
normal_vector = eigenvectors[:, min_eigen_idx]  #找到最小特征值对应的特征向量,作为拟合平面的法向量[a, b, c]a, b, c = normal_vector
d = -np.dot(normal_vector, centroid)
'''
d = - [a,b,c] dot [μ_x, μ_y, μ_z] = -(a * μ_x + b * μ_y + c * μ_z)
'''
print(f"平面方程: {a:.4f}x + {b:.4f}y + {c:.4f}z + {d:.4f} = 0")# 6.可视化
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')# 设置坐标轴和标题
ax.set_xlabel('X', fontsize=12)
ax.set_ylabel('Y', fontsize=12)
ax.set_zlabel('Z', fontsize=12)
ax.set_title('PCA法拟合平面', fontsize=14)min_pt = np.amin(points, axis=0)  # 获取坐标最小值
max_pt = np.amax(points, axis=0)  # 获取坐标最大值# 绘制数据点
ax.scatter(points[:,0], points[:,1], points[:,2],#点坐标(x,y,z)c='red',#点颜色s=60, #点大小label='数据点')# 生成网格点绘制平面
xx = np.linspace(min_pt[0], max_pt[0], 100)
yy = np.linspace(min_pt[1], max_pt[1], 100)
xx, yy = np.meshgrid(xx,yy)#生成网格
zz = (-a*xx - b*yy - d) / c #解平面方程z# 绘制平面
ax.plot_wireframe(xx, yy, zz,color= "blue",#平面颜色alpha=0.5,#透明度 0~1label=f'PCA拟合平面')# 绘制法向量(从均值点出发)
normal_vector = eigenvectors[:, min_eigen_idx]  # 法向量 [a, b, c]
normalized_normal = normal_vector / np.linalg.norm(normal_vector)  # 单位化
ax.quiver(centroid[0], centroid[1], centroid[2],  # 起点(平面中心)normalized_normal[0], normalized_normal[1], normalized_normal[2],  # 方向color='black',#颜色length=0.5,  # 箭头长度(根据数据范围调整)arrow_length_ratio=0.1,  # 箭头头部比例label='法向量'
)plt.legend()
plt.show()

运行结果:

优雅~,太优雅了😈 

4.2.3 Open3D 实现PCA法拟合

😈待更新....

5.SVD分解法

😈待更新....

相关文章:

最小二乘法拟合平面(线性回归法、梯度下降、PCA法)

参考笔记: Open3D 最小二乘拟合平面(直接求解法)【2025最新版】_python open3d已知平面方程绘制平面-CSDN博客 目录 1.前言 2.线性回归法 2.1 模型假设 2.2 定义误差函数 2.3 求偏导并解方程 2.4 解方程 2.5 案例演示 2.5.1 手工计…...

数组名既可作为指针也可作为变量名

在C语言中,数组名在不同的上下文中既可以作为指向数组首个元素的指针,也可以代表整个数组,这是由C语言的设计和语法规则决定的,下面我来详细解释一下。 1. 数组名作为指向首元素的指针 在大多数情况下,当数组名出现在…...

MySQL相关

1.多表查询关键点在哪 📖 1️⃣ 明确关联关系 先搞清楚多表之间的关联关系: 一对一(1:1) 一对多(1:N) 多对多(M:N) 比如: 一个课程对应一个教室(1:1&am…...

Axure制作可视化大屏动态滚动列表教程

在可视化大屏设计中,动态滚动列表是一种常见且实用的展示方式,能够有效地展示大量信息。本文将详细介绍如何使用Axure制作一个动态滚动的列表展示模块。 一、准备工作 打开Axure软件:确保你已经安装并打开了Axure RP软件。创建新项目&#x…...

计算机网络(1)——概述

1.计算机网络基本概念 1.1 什么是计算机网络 计算机网络的产生背景 在计算机网络出现之前,计算机之间都是相互独立的,每台计算机只能访问自身存储的数据,无法与其他计算机进行数据交换和资源共享。这种独立的计算机系统存在诸多局限性&#…...

融智学视域下的系统性认知增强框架——基于文理工三类AI助理赋能HI四阶跃迁路径

融智学视域下的系统性认知增强框架 ——基于文理工三类AI助理赋能HI四阶跃迁路径 一、如何排除50个认知偏差:消除50类偏差的精准矫正系统 1. 技术架构 文科AI: 构建文化语义场(Cultural Semantic Field, CSF),通过…...

C++ - 仿 RabbitMQ 实现消息队列(2)(Protobuf 和 Muduo 初识)

C - 仿 RabbitMQ 实现消息队列(2)(Protobuf 和 Muduo 初识) Protobuf1. 序列化/反序列化方法(最核心)_InternalSerialize()_InternalParse() 2. 内存管理方法SharedCtor()/SharedDtor()InternalSwap() 3. 字…...

FTP与NFS服务实战:从配置到应用

一、FTP服务进阶:客户端工具与访问控制 1. FTP客户端工具对比 在Linux中,ftp和lftp是常用的FTP客户端工具,功能各有侧重: 工具特点适用场景ftp基础命令交互,需手动输入用户名/密码简单文件传输lftp支持多协议、批量…...

高考AI试题查询系统

高考AI试题查询系统 gitee:https://gitee.com/ltyyyds26/GaoKao_AI 数据 来源:OpenLMLab/GAOKAO-Bench: GAOKAO-Bench is an evaluation framework that utilizes GAOKAO questions as a dataset to evaluate large language models. (github.com) 数…...

记录算法笔记(2025.5.17)验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入&…...

DataX:一个开源的离线数据同步工具

DataX 是一个异构数据源离线同步(ETL)工具,实现了包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。它也是阿里云 DataWorks 数据集成功能的开源版本。 为了解决异构数据源同…...

剑指offer第一周

目录 二维数组中的查找 旋转数组的最小数字 调整数组顺序使奇数位于偶数前面 数组中出现次数超过一半的数字 替换空格 从尾到头打印链表 重建二叉树 矩形覆盖 链表中倒数最后k个结点 二进制中1的个数 合并两个排序的链表 树的子结构 二叉树的镜像 ​​​​​​​二…...

素数筛(欧拉筛算法)

#include<bits/stdc.h> using namespace std; #define maxn 100000 int vis[maxn]; int prime[maxn]; //欧拉筛函数 int Euler_sieve(int n) { int i,j,k; k0;//保存素数的个数 memset(vis,0,sizeof(int)*maxn);//初始化数组 for(i2;i<n;i) { if(vis[i]0)//i是素数…...

遨游科普:三防平板是什么?有什么功能?

清晨的露珠还挂在帐篷边缘&#xff0c;背包里的三防平板却已开机导航&#xff1b;工地的尘土飞扬中&#xff0c;工程师正通过它查看施工图纸&#xff1b;暴雨倾盆的救援现场&#xff0c;应急队员用它实时回传灾情数据……这些看似科幻的场景&#xff0c;正因三防平板的普及成为…...

CSS 浮动与定位以及定位中z-index的堆叠问题

CSS 浮动与定位以及定位中z-index的堆叠问题 一、浮动布局的特点与应用 1. 浮动核心特性 脱离标准流&#xff1a;浮动元素会脱离文档流。环绕特性&#xff1a;后续内容会环绕浮动元素排列自动换行&#xff1a;多个浮动元素在容器宽度不足时自动换行 .float-box {float: lef…...

在Maven中替换文件内容的插件和方法

在Maven中替换文件内容的插件和方法 Maven提供了几种方式来替换文件内容&#xff0c;以下是常用的插件和方法&#xff1a; 1. maven-replacer-plugin (推荐) 这是专门用于文件内容替换的插件&#xff0c;功能强大且灵活。 基本配置 <plugin><groupId>com.goog…...

C# lock

在C#中&#xff0c;lock关键字用于确保当一个线程位于给定实例的代码块中时&#xff0c;其他线程无法访问同一实例的该代码块。这是一种简单的同步机制&#xff0c;用来防止多个线程同时访问共享资源或执行需要独占访问的代码段&#xff08;临界区&#xff09;&#xff0c;从而…...

OGGMA 21c 微服务 (MySQL) 安装避坑指南

前言 这两天在写 100 天实战课程 的 OGG 微服务课程&#xff1a; 在 Oracle Linux 8.10 上安装 OGGMA 21c MySQL 遇到了一点问题&#xff0c;分享给大家一起避坑&#xff01; 环境信息 环境信息&#xff1a; 主机版本主机名实例名MySQL 版本IP 地址数据库字符集Goldengate …...

NPN、PNP三极管的应用

由于电路知识实在是难以拿出手&#xff0c;在面试的时候被问到三极管相关问题&#xff0c;相当地尴尬。在网上简要地学习了相关的理论知识&#xff0c;在这里给出自己的理解。更为基础的原理在这里并不提及。我们面向实际应用学习即可。 我们知道常见的三极管总是硅管&#xff…...

Cadence Allegro安装教程及指导

Cadence Allegro 是一款专业的 PCB 设计软件&#xff0c;被广泛应用于电子行业。它功能强大&#xff0c;能够处理复杂的电路板设计任务。下面为你详细介绍 Cadence Allegro 的安装步骤。 一、安装前准备 在安装 Cadence Allegro 之前&#xff0c;需要进行一系列准备工作&…...

阿里通义万相 Wan2.1-VACE:开启视频创作新境界

2025 年 5 月 14 日&#xff0c;阿里巴巴为视频创作领域带来了重磅惊喜 —— 开源通义万相 Wan2.1-VACE。这一模型堪称视频生成与编辑领域的集大成者&#xff0c;凭借其全面且强大的功能&#xff0c;为广大创作者、开发者以及企业用户开辟了全新的视频创作天地。它打破了以往视…...

mAP、AP50、AR50:目标检测中的核心评价指标解析

在目标检测任务中&#xff0c;评价指标是衡量模型性能的核心工具。其中&#xff0c;mAP&#xff08;mean Average Precision&#xff09;、AP50&#xff08;Average Precision at IoU0.5&#xff09;和AR50&#xff08;Average Recall at IoU0.5&#xff09;是最常用的指标。本…...

Linux进程异常退出排查指南

在 Linux 中&#xff0c;如果进程无法正常终止&#xff08;如 kill 命令无效&#xff09;或异常退出&#xff0c;可以按照以下步骤排查和解决&#xff1a; 1. 常规终止进程 尝试普通终止&#xff08;SIGTERM&#xff09; kill PID # 发送 SIGTERM 信号&#xff08;…...

深入解析:如何基于开源OpENer开发EtherNet/IP从站服务

一、EtherNet/IP协议概述 EtherNet/IP(Industrial Protocol)是一种基于以太网的工业自动化通信协议,它将CIP(Common Industrial Protocol)封装在标准以太网帧中,通过TCP/IP和UDP/IP实现工业设备间的通信。作为ODVA(Open DeviceNet Vendors Association)组织的核心协议…...

【Linux 学习计划】-- yum

目录 什么是yum Linux的生态讲解 yum相关操作 yum源 yum配置相关问题 结语 什么是yum 我们的手机上都有手机自带的软件商城&#xff0c;我们下载软件都可以在上面搜索&#xff0c;安装&#xff0c;下载 而我们的yum就是这么一个东西&#xff0c;他其实就是Linux下的安装…...

Qt 强大的窗口停靠浮动

1、左边&#xff1a; 示例代码&#xff1a; CDockManager::setConfigFlags(CDockManager::DefaultOpaqueConfig); CDockManager::setConfigFlag(CDockManager::FocusHighlighting, true); dockManager new CDockManager(this); // Disabling the Internal Style S…...

Flink 数据传输机制

在 Apache Flink 中&#xff0c;数据传输&#xff08;Data Transmission&#xff09;机制 是其分布式流处理能力的核心之一。Flink 通过高效的内部数据交换、网络通信和序列化机制&#xff0c;确保任务之间的数据能够高效、可靠地流动。 一、Flink 数据传输的基本流程 Source …...

数据库——SQL约束窗口函数介绍

4.SQL约束介绍 &#xff08;1&#xff09;主键约束 A、基本内容 基本内容 p r i m a r y primary primary k e y key key约束唯一表示数据库中的每条记录主键必须包含唯一的值&#xff08;UNIQUE&#xff09;主键不能包含NULL值&#xff08;NOT NULL&#xff09;每个表都应…...

第8讲、Multi-Head Attention 的核心机制与实现细节

&#x1f914; 为什么要有 Multi-Head Attention&#xff1f; 单个 Attention 机制虽然可以捕捉句子中不同词之间的关系&#xff0c;但它只能关注一种角度或模式。 Multi-Head 的作用是&#xff1a; 多个头 多个视角同时观察序列的不同关系。 例如&#xff1a; 一个头可能专…...

【发票提取表格】批量PDF电子发票提取明细保存到Excel表格,批量提取ODF电子发票明细,行程单明细,单据明细保存到表格,使用步骤、详细操作方法和注意事项

在日常办公中&#xff0c;我们常常会面临从大量 PDF 电子发票、ODF 电子发票、行程单及各类单据中提取明细&#xff0c;并整理到 Excel 表格的艰巨任务。手动操作不仅耗时费力&#xff0c;还极易出错。以下为您详细介绍其使用步骤、操作方法、注意事项及应用场景。​ 一、适用场…...

React中startTransition的使用

// 引入 React 的 Hook API&#xff1a;useState 管理状态、useTransition 处理非紧急更新、useMemo 缓存计算结果 import { useState, useTransition, useMemo } from react;/*** List 组件&#xff1a;* 根据输入的 query 动态渲染一个包含 10000 条数据的列表*/ function Li…...

Reactor (epoll实现基础)

Reactor 是什么&#xff1f; Reactor 网络模型是一种高性能的事件驱动模型&#xff0c;广泛应用于网络编程中。它通过 I/O 多路复用技术&#xff0c;实现了高效的事件处理和系统吞吐量的优化。 核心概念 Reactor 模型_的核心是事件驱动&#xff0c;即当 I/O 事件准备就绪时_…...

php fiber 应用

参考 基于 PHP Fiber&#xff08;纤程&#xff09;的游戏开发分析-腾讯云开发者社区-腾讯云PHP 8.1 引入的 Fibers 为游戏开发带来新机遇&#xff0c;能管理渲染、物理计算等任务且不阻塞主线程。它支持并发&#xff0c;提升效率&#xff0c;简单易用&#xff0c;但也有局限&a…...

前端扫盲HTML

文章目录 下载、安装、运行第一个代码&#xff08;hello world&#xff09;创建代码文件编辑代码&#xff08;hello world&#xff09;HTML常见标签注释标签标题标签段落标签换行标签格式化标签图片标签表格标签列表标签表单标签下拉菜单无语义标签 参考文档 下载、安装、运行第…...

RAG与微调:企业知识库落地的技术选型

从本质上看&#xff0c;RAG是"让模型查阅外部知识"&#xff0c;而微调是"让模型学会并内化知识"。这一根本差异决定了它们在不同场景下的适用性。 技术选型的关键依据 场景RAG微调说明模型定制化需求❌✅微调更适合塑造特定风格、口吻和人格特征硬件资源…...

Linux安全篇 --firewalld

一、Firewalld 防火墙概述 1、Firewalld 简介 firewalld 的作用是为包过滤机制提供匹配规则(或称为策略)&#xff0c;通过各种不同的规则告诉netfilter 对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式为了更加方便地组织和管理防火墙,firewalld 提供…...

关于Android Studio for Platform的使用记录

文章目录 简单介绍如何使用配置导入aosp工程配置文件asfp-config.json 简单介绍 Android Studio for Platform是google最新开发&#xff0c;用来阅读aosp源码的工具 详细的资料介绍&#xff1a; https://developer.android.google.cn/studio/platform 将工具下载下来直接点击…...

搜索引擎工作原理|倒排索引|query改写|CTR点击率预估|爬虫

写在前面 使用搜索引擎是我们经常做的事情&#xff0c;搜索引擎的实现原理。 什么是搜索引擎 搜索引擎是一种在线搜索工具&#xff0c;当用户在搜索框输入关键词时&#xff0c;搜索引擎就会将与该关键词相关的内容展示给用户。比较大型的搜索引擎有谷歌&#xff0c;百度&…...

【找工作系列①】【大四毕业】【复习】巩固JavaScript,了解ES6。

文章目录 前言Tasks:复习笔记&#xff1a;JavaScript是什么&#xff1f;JavaScript有什么用或者换句话说 是做什么的&#xff1f;JavaScript由哪几部分组成&#xff1f;BOM?DOM?html文件中script标签放在哪里?&#x1f9e9; 1. **放在 ****<head>**** 中**✅ 优点&…...

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接

Oracle 11.2.0.4 pre PSU Oct18 设置SSL连接 1 说明2 客户端配置jdk环境3服务器检查oracle数据库补丁4设置ssla 服务器配置walletb 上传测试脚本和配置文件到客户端c 服务器修改数据库侦听和sqlnet.orad 修改客户端的sqlnet.ora和tnsnames.ora的连接符e 修改java代码的数据连接…...

本地部署开源网盘系统 kiftd 并实现外部访问(Linux 版本)

kiftd 是一款专为个人、团队及小型组织设计的开源网盘系统&#xff0c;兼具便捷性、跨平台兼容性与丰富的功能&#xff0c;成为替代传统文件共享工具的理想选择。 本文将详细介绍如何在 Linux 系统本地部署 kiftd 并结合路由侠实现外网访问本地部署的 kiftd 。 第一步&#x…...

ECS/GEM是半导体制造业的标准通信协议中host和equipment的区别是什么,在交互过程中,如何来定位角色谁为host,谁为equipment

文章目录 一、角色定义与核心区别1. Host&#xff08;主机&#xff09;2. Equipment&#xff08;设备&#xff09;3. Host与Equipment的核心区别 二、交互过程中的角色定位1. 交互方向2. 控制层级3. 交互过程中角色的定位方法3.1. 通信发起方向3.2. 协议功能与状态管理3.3. 物理…...

5000 字总结CSS 中的过渡、动画和变换详解

CSS 中的过渡、动画和变换详解 一、CSS 过渡&#xff08;Transitions&#xff09; 1. 基本概念 CSS 过渡是一种平滑改变 CSS 属性值的机制&#xff0c;允许属性值在一定时间内从一个值逐渐变化到另一个值&#xff0c;从而创建流畅的动画效果。过渡只能用于具有中间值的属性&…...

2025年渗透测试面试题总结-安恒[实习]安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 安恒[实习]安全工程师 一面 1. 自我介绍 2. 前两段实习做了些什么 3. 中等难度的算法题 4. Java的C…...

WebXR教学 09 项目7 使用python从0搭建一个简易个人博客

WebXR教学 09 项目7 使用python从0搭建一个简易个人博客&#xff08;1&#xff09; 前期设计规划 功能 呈现个人博客文章 技术选型 HTMLCSSJSPythonFlask 环境准备 VS Code Python3.8 代码实现 包 # 创建虚拟环境&#xff08;-m 会先将模块所在路径加入 sys.path,更适…...

c++从入门到精通(五)--异常处理,命名空间,多继承与虚继承

异常处理 栈展开过程&#xff1a; 栈展开过程沿着嵌套函数的调用链不断查找&#xff0c;直到找到了与异常匹配的catch子句为止&#xff1b;也可能一直没找到匹配的catch&#xff0c;则退出主函数后查找过程终止。栈展开过程中的对象被自动销毁。 在栈展开的过程中&#xff0c…...

开源安全大模型Foundation-Sec-8B实操

一、兴奋时刻 此时此刻,晚上22点55分,从今天早上6点左右开始折腾,花费了接近10刀的环境使用费,1天的休息时间,总算是把Foundation-Sec-8B模型跑起来了,中间有两次胜利就在眼前,但却总在远程端口转发环节出问题,让人难受。直到晚上远程Jupyter访问成功那一刻,眉开眼笑,…...

现代优化算法全解析:禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化算法、人工神经网络

现代优化算法全解析&#xff1a;禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化算法、人工神经网络 引言&#xff1a;为什么需要优化算法&#xff1f; 在当今这个数据驱动的时代&#xff0c;优化算法已成为计算机科学、工程设计、人工智能等领域的核心工具。无论是训练神经…...

Docker常见命令解读

上图是对docker常见命令的一个图解&#xff0c;方便大家理解&#xff0c;下面&#xff0c;我将对这些命令做一些解释。 一、镜像生命周期管理 1. 镜像构建&#xff08;Build&#xff09; docker build -t my-image . # 根据Dockerfile构建镜像 ​Dockerfile​&#xff1a;…...

为什么 Docker 建议关闭 Swap

在使用 Docker 时&#xff0c;关闭系统 Swap&#xff08;交换分区&#xff09; 是一个常见的推荐做法&#xff0c;尤其是在生产环境中。虽然 Docker 不强制要求禁用 Swap&#xff0c;但出于性能、稳定性、可控性和资源管理的目的&#xff0c;通常建议这样做。 为什么 Docker 建…...