【机器学习导引】ch6-支持向量机

参考链接

【数之道】支持向量机SVM是什么,八分钟直觉理解其本质

间隔与支持向量

**问题引入:**在样本空间中寻找一个超平面,将不同类别的样本分类

在这里插入图片描述

  1. 超平面:在支持向量机中,模型的目标是找到一个能够分开不同类别的平面,这个平面称为超平面。**超平面的方程为 w T x + b = 0 w^T x + b = 0 wTx+b=0 ,**其中:
    • w w w 是权重向量,决定了超平面的方向;
    • b b b 是偏置,决定了超平面的位置。
    • 由式: w 1 x 1 + w 2 x 2 + b = 0 w_1x_1+w_2x_2+b=0 w1x1+w2x2+b=0,变形而得
      • w = ( w 1 w 2 ) w = \left (\begin{array}{c} w_1 \\ w_2 \end{array}\right) w=(w1w2)
      • x = ( x 1 x 2 ) x = \left(\begin{array}{c} x_1 \\ x_2 \end{array} \right) x=(x1x2)
  2. 支持向量:图中标注的带圆圈的点就是支持向量。支持向量是离超平面最近的点,也就是距离超平面最小的点。 S V M SVM SVM 通过这些支持向量来决定超平面的位置和方向。
  3. 间隔(Margin):间隔是指从超平面到支持向量的距离,用 γ = 2 ∥ w ∥ \gamma = \frac{2}{\|w\|} γ=w2 表示。在 S V M SVM SVM 中,我们希望最大化这个间隔,使不同类别的样本尽可能地被分开,达到更好的分类效果。
  4. 距离公式:对于超平面上任意一点 x x x ,其到超平面的距离 r = ∣ w T x + b ∣ ∥ w ∥ r = \frac{|w^T x + b|}{\|w\|} r=wwTx+b 。通过这个公式,我们可以计算每个点到超平面的距离。
  5. 支持向量机的目标:SVM 的核心思想就是找到一个最大间隔的超平面(即“间隔最大化”)。这样可以增强模型对新数据的泛化能力,减少分类错误的可能性。

w T x + b = 1 w^T x + b = 1 wTx+b=1 w T x + b = − 1 w^T x + b = -1 wTx+b=1 表示的是距离超平面单位间隔的两条平行线。这两条线之间的距离就是间隔的大小,SVM 通过调节 w w w b b b 来使得这两条线尽可能远离超平面。

在这里插入图片描述

  • 间隔(Margin)是如何计算的?

    w T x 1 + b = 1 (1) w^Tx_1 + b = 1 \tag{1} wTx1+b=1(1)

    w T x 2 + b = − 1 (2) w^Tx_2+b=-1 \tag{2} wTx2+b=1(2)

    由:1 式减 2 式,可得:

    $$
    \Rightarrow w^T(x_1 - x_2) = 2 \tag{3}

    \

    \Rightarrow |w|_2 *|x_1-x_2|_2 * \cos{\theta} = 2
    $$

    $$
    L \ * |w|_2 = 2 \tag{4}

    \

    \Rightarrow L = \frac{2}{|w|}_2
    $$

最大间隔优化问题

  1. 最大化间隔的目标:支持向量机的核心目标是找到一个超平面,使得分类间隔最大化。这个间隔 γ \gamma γ 2 ∥ w ∥ \frac{2}{\|w\|} w2,所以间隔最大化可以表述为:

    max ⁡ w ∈ R d 2 ∥ w ∥ 2 \max_{w \in \mathbb{R}^d} \frac{2}{\|w\|_2} wRdmaxw22

    其中 ∥ w ∥ 2 \|w\|_2 w2 表示 w w w 的欧几里得范数。

  2. 将最大化转换为最小化:为了方便优化,我们可以把这个目标函数转换成一个等价的最小化问题。由于 2 ∥ w ∥ 2 \frac{2}{\|w\|_2} w22 随着 ∥ w ∥ \|w\| w 的减小而增大,因此最大化间隔等价于最小化 ∥ w ∥ 2 2 \|w\|_2^2 w22

    • 进一步地,为了便于计算(求导),我们常常在目标函数前乘上 1 2 \frac{1}{2} 21,即:

      min ⁡ w ∈ R d 1 2 ∥ w ∥ 2 2 \min_{w \in \mathbb{R}^d} \frac{1}{2} \|w\|_2^2 wRdmin21w22

  3. 约束条件:约束条件 y i ( w T x i + b ) ≥ 1 y_i(w^T x_i + b) \geq 1 yi(wTxi+b)1 确保所有样本点位于间隔的正确一侧,即保证每个点 x i x_i xi 都被正确分类,其中 y i y_i yi 是样本的标签( + 1 +1 +1 − 1 -1 1)。这个约束条件表示:

    • 对于正类样本( y i = + 1 y_i = +1 yi=+1),需要满足 w T x i + b ≥ 1 w^T x_i + b \geq 1 wTxi+b1
    • 对于负类样本( y i = − 1 y_i = -1 yi=1),需要满足 w T x i + b ≤ − 1 w^T x_i + b \leq -1 wTxi+b1
  4. 总结:因此,支持向量机的优化问题可以表示为在满足样本分类正确的约束条件下,最小化 1 2 ∥ w ∥ 2 2 \frac{1}{2} \|w\|_2^2 21w22 的凸二次规划问题。这个问题可以通过优化算法来求解。

对偶问题

KKT 条件

K K T KKT KKT 条件用于求解含有 不等式约束 的优化问题,是对拉格朗日乘子法的推广。

  • 优化问题的基本形式:最小化目标函数 f ( x ) f(x) f(x)约束条件 g ( x ) ≤ 0 g(x) \leq 0 g(x)0

    min ⁡ x ∈ R d f ( x ) , s . t . g ( x ) ≤ 0 (1) \min_{x \in \mathbb{R}^d} f(x),\ s.t. \ g(x) \leq 0 \tag{1} xRdminf(x), s.t. g(x)0(1)

  • 拉格朗日函数的定义: L ( x , α ) = f ( x ) + α g ( x ) L(x, \alpha) = f(x) + \alpha g(x) L(x,α)=f(x)+αg(x)其中 α ≥ 0 \alpha \geq 0 α0

原始问题的转化。主要内容如下:

  • 原始问题:定义为

    min ⁡ x ∈ R d max ⁡ α ≥ 0 L ( x , α ) (3) \min_{\mathbf{x} \in \mathbb{R}^d} \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) \tag{3} xRdminα0maxL(x,α)(3)

  • 等价性:可以证明问题 ( 1 ) (1) (1) ( 3 ) (3) (3) 是等价的。

  • 问题转换:定义

    L p ( x ) = max ⁡ α ≥ 0 L ( x , α ) L_p(\mathbf{x}) = \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) Lp(x)=α0maxL(x,α)

    则问题 (3) 可以转化为一个新的问题:

    min ⁡ x ∈ R d L p ( x ) \min_{\mathbf{x} \in \mathbb{R}^d} L_p(\mathbf{x}) xRdminLp(x)

这一步的转换将复杂的对偶问题简化为更易于处理的形式,便于求解最优解。

  • 为什么原始问题可以这样定义?

    原始问题可以这样定义的原因是通过 拉格朗日对偶理论,我们可以将一个带有不等式约束的优化问题转化为一个无约束的极值问题,这种转换方法非常重要。

    具体来说,考虑如下的优化问题:

    min ⁡ x ∈ R d f ( x ) s.t. g ( x ) ≤ 0 \min_{\mathbf{x} \in \mathbb{R}^d} f(\mathbf{x}) \quad \text{s.t.} \quad g(\mathbf{x}) \leq 0 xRdminf(x)s.t.g(x)0

    为了处理约束 g ( x ) ≤ 0 g(\mathbf{x}) \leq 0 g(x)0 ,我们引入了 拉格朗日函数

    L ( x , α ) = f ( x ) + α g ( x ) , L(\mathbf{x}, \alpha) = f(\mathbf{x}) + \alpha g(\mathbf{x}), L(x,α)=f(x)+αg(x),

    其中 α ≥ 0 \alpha \geq 0 α0 是拉格朗日乘子,用于量化约束条件的影响。原始优化问题因此可以等价地表达为一个 极小-极大问题

    min ⁡ x ∈ R d max ⁡ α ≥ 0 L ( x , α ) . \min_{\mathbf{x} \in \mathbb{R}^d} \max_{\alpha \geq 0} L(\mathbf{x}, \alpha). xRdminα0maxL(x,α).

    这个定义背后的原因是:通过引入对偶变量(拉格朗日乘子),我们可以确保在满足约束条件的同时最小化目标函数。这种方式的关键在于:如果存在某些 α \alpha α 值使得 g ( x ) > 0 g(\mathbf{x}) > 0 g(x)>0,则在极大化过程中,这些值将被过滤掉,因为会导致拉格朗日函数 L ( x , α ) L(\mathbf{x}, \alpha) L(x,α) 的值增加。

    转换为等价无约束问题

    通过定义 L p ( x ) = max ⁡ α ≥ 0 L ( x , α ) L_p(\mathbf{x}) = \max_{\alpha \geq 0} L(\mathbf{x}, \alpha) Lp(x)=maxα0L(x,α),我们可以将原始的极小-极大问题简化为一个单独的极小化问题

    min ⁡ x ∈ R d L p ( x ) . \min_{\mathbf{x} \in \mathbb{R}^d} L_p(\mathbf{x}). xRdminLp(x).

    这种方法的好处是将一个含约束的优化问题转化为一个无约束的优化问题(通过极大化步骤“消化”了约束),从而使问题变得更易处理。这种定义方式利用了对偶理论的优势,是求解不等式约束优化问题的重要工具。

  • **对偶问题:**定义为

    max ⁡ α ≥ 0 min ⁡ x ∈ R d L ( x , α ) (4) \max_{\alpha \geq 0}\min_{x \in \mathbb{R}^d} L(x,\alpha) \tag{4} α0maxxRdminL(x,α)(4)

    L D ( α ) = min ⁡ x ∈ R d L ( x , α ) , L_D(\alpha) = \min_{x \in \mathbb{R}^d} L(x,\alpha), LD(α)=xRdminL(x,α),

    则问题转换为:

    max ⁡ α ≥ 0 L D ( α ) , (4-1) \max_{\alpha \geq0} L_D(\alpha),\tag{4-1} α0maxLD(α),(4-1)

KKT 条件(Karush-Kuhn-Tucker conditions) 总结

  1. 平稳性(Stationarity)

    ∇ f ( x ∗ ) + α ∗ ∇ g ( x ∗ ) = 0 \nabla f(\mathbf{x}^*) + \alpha^* \nabla g(\mathbf{x}^*) = 0 f(x)+αg(x)=0

    这个条件说明,在最优解处,目标函数的梯度约束的梯度通过拉格朗日乘子 α ∗ \alpha^* α 的加权和为零。

  2. 原始问题可行性(Primal feasibility)

    g ( x ∗ ) ≤ 0 g(\mathbf{x}^*) \leq 0 g(x)0

    该条件要求解 x ∗ \mathbf{x}^* x 必须满足原始问题的约束条件。

  3. 对偶问题可行性(Dual feasibility)

    α ∗ ≥ 0 \alpha^* \geq 0 α0

    对偶变量 α ∗ \alpha^* α 必须是非负的,这是对偶问题的基本要求。

  4. 互补松弛性(Complementary slackness)

    α ∗ g ( x ∗ ) = 0 \alpha^* g(\mathbf{x}^*) = 0 αg(x)=0

    这个条件表示如果 α ∗ > 0 \alpha^* > 0 α>0,则 g ( x ∗ ) = 0 g(\mathbf{x}^*) = 0 g(x)=0;反之*,*如果 g ( x ∗ ) < 0 g(\mathbf{x}^*) < 0 g(x)<0,则 α ∗ = 0 \alpha^* = 0 α=0。它确保了约束的“有效性”。

    这四个条件共同构成了 KKT 条件,是优化问题在最优解处必须满足的条件。它们广泛应用于支持向量机等机器学习模型的优化问题中。

样例

这个例子展示了如何通过 KKT 条件求解一个具体的优化问题,步骤如下:

问题描述

  • 优化目标:

min ⁡ x ∈ R 2 x 1 2 + x 2 2 \min_{\mathbf{x} \in \mathbb{R}^2} x_1^2 + x_2^2 xR2minx12+x22

  • 约束条件: x 1 + x 2 ≥ 0.5 x_1 + x_2 \geq 0.5 x1+x20.5

问题转换

将原问题转化为向量形式:

min ⁡ x ∈ R 2 ∥ x ∥ 2 2 , s.t. 0.5 − 1 T x ≤ 0 \min_{\mathbf{x} \in \mathbb{R}^2} \|\mathbf{x}\|_2^2, \quad \text{s.t.} \quad 0.5 - \mathbf{1}^T \mathbf{x} \leq 0 xR2minx22,s.t.0.51Tx0

拉格朗日函数

定义拉格朗日函数:

$$
L(\mathbf{x}, \alpha) = |\mathbf{x}|_2^2 + \alpha (0.5 - \mathbf{1}^T \mathbf{x})

\

= |\mathbf{x}|_2^2 + 0.5\alpha - \alpha1^T\mathbf{x}
$$

求解步骤

  1. 平稳性条件

    根据平稳性条件,对 x \mathbf{x} x 求导并设为零,可以得到:

    2 x − α 1 = 0 2\mathbf{x} - \alpha 1= 0 2xα1=0

    x = 0.5 α 1 \mathbf{x} = 0.5 \alpha \mathbf{1} x=0.5α1

  2. 互补松弛性条件

    根据互补松弛性条件,有 α ( 0.5 − 1 T x ) = 0 \alpha (0.5 - \mathbf{1}^T \mathbf{x}) = 0 α(0.51Tx)=0

  3. 最终解

    通过以上条件推导,可以得到:

    x = ( 1 / 4 1 / 4 ) \mathbf{x} = \begin{pmatrix} 1/4 \\ 1/4 \end{pmatrix} x=(1/41/4)

这个例子展示了利用 KKT 条件求解带约束的优化问题的过程,最终得到了最优解 x = ( 1 / 4 , 1 / 4 ) T \mathbf{x} = (1/4, 1/4)^T x=(1/4,1/4)T

支持向量机(SVM)优化问题的转换过程

初始优化问题

min ⁡ ∥ w ⃗ ∥ s . t y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) ≥ 1 , i = 1 , 2 , 3 , … \min{\| \vec{w} \|} \ s.t \\ y_i \cdot (\vec{w} \cdot \vec{x}_i + b) \geq 1, \quad i = 1, 2, 3, \dots minw  s.tyi(w x i+b)1,i=1,2,3,

其中, y i y_i yi 表示数据点 i i i 的标签, x ⃗ i \vec{x}_i x i 是输入向量, w ⃗ \vec{w} w 是权重向量, b b b 是偏置, s s s 是样本总数。


重新表述

min ⁡ f ( w ) = ∥ w ⃗ ∥ 2 2 s . t g i ( w , b ) = y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 ≥ 0 , i = 1 , 2 , 3 , … \min{f(w) = \frac{\| \vec{w} \|^2}{2} }\ s.t \\ g_i(w, b) = y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 \geq 0, \quad i = 1, 2, 3, \dots minf(w)=2w 2 s.tgi(w,b)=yi(w x i+b)10,i=1,2,3,


引入松弛变量

g i ( w , b ) = y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 = p i 2 , i = 1 , 2 , 3 , … g_i(w, b) = y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 = p_i^2, \quad i = 1, 2, 3, \dots gi(w,b)=yi(w x i+b)1=pi2,i=1,2,3,


拉格朗日函数

定义拉格朗日函数 L ( w , b , λ i , p i ) L(w, b, \lambda_i, p_i) L(w,b,λi,pi) 为:

L ( w , b , λ i , p i ) = ∥ w ⃗ ∥ 2 2 − ∑ i = 1 s λ i ⋅ ( y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 − p i 2 ) L(w, b, \lambda_i, p_i) = \frac{\| \vec{w} \|^2}{2} - \sum_{i=1}^s \lambda_i \cdot (y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 - p_i^2) L(w,b,λi,pi)=2w 2i=1sλi(yi(w x i+b)1pi2)

其中, λ i \lambda_i λi 表示与约束相关的拉格朗日乘子, p i p_i pi 表示松弛变量(可能用于处理在SVM中不可线性分割的数据点)。


解释

这组公式展示了从原始的硬间隔 SVM 问题软间隔 SVM 的转换过程,通过引入松弛变量 p i 2 p_i^2 pi2 来允许一定的误分类或间隔的违约。最后一步是拉格朗日函数的定义,包含了拉格朗日乘子 λ i \lambda_i λi 来处理约束条件。


通过对各变量 ( w 、 b 、 λ i 、 p i ) ( w 、 b 、 \lambda_i 、 p_i ) wbλipi求偏导并设为零,得到一组 KKT(Karush-Kuhn-Tucker)条件,用于支持向量机的优化求解。

KKT条件的偏导数

  1. w w w 求导 ∂ L ∂ w = 0 \frac{\partial L}{\partial w} = 0 wL=0
  2. 对 b 求导 ∂ L ∂ b = 0 \frac{\partial L}{\partial b} = 0 bL=0
  3. λ i \lambda_i λi 求导 ∂ L ∂ λ i = 0 \frac{\partial L}{\partial \lambda_i} = 0 λiL=0
  4. p i p_i pi 求导 ∂ L ∂ p i = 0 \frac{\partial L}{\partial p_i} = 0 piL=0

由此得到的KKT条件

  1. 条件 1:关于 w w w 的方程

    w ⃗ − ∑ i = 1 s λ i y i x ⃗ i = 0 \vec{w} - \sum_{i=1}^s \lambda_i y_i \vec{x}_i = 0 w i=1sλiyix i=0

  2. 条件 2:关于 b b b 的方程

    ∑ i = 1 s λ i y i = 0 \sum_{i=1}^s \lambda_i y_i = 0 i=1sλiyi=0

  3. 条件 3:关于约束的等式

    y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 − p i 2 = 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 - p_i^2 = 0 yi(w x i+b)1pi2=0

  4. 条件 4:关于松弛变量的条件

    2 λ i p i = 0 2 \lambda_i p_i = 0 2λipi=0

    该条件进一步得出:

    • 如果 λ i ≠ 0 \lambda_i \neq 0 λi=0 ,则 p i = 0 p_i = 0 pi=0
    • 如果 p i ≠ 0 p_i \neq 0 pi=0 ,则 λ i = 0 \lambda_i = 0 λi=0

最终的决策条件

  • 如果 y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 > 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 > 0 yi(w x i+b)1>0 ,则 λ i = 0 \lambda_i = 0 λi=0 ,表示该点不在间隔边界上。
  • 如果 y i ⋅ ( w ⃗ ⋅ x ⃗ i + b ) − 1 = 0 y_i \cdot (\vec{w} \cdot \vec{x}_i + b) - 1 = 0 yi(w x i+b)1=0 ,则 λ i ≠ 0 \lambda_i \neq 0 λi=0 ,表示该点在间隔边界上(支持向量)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/472771.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解map与multimap容器

目录 一、map简介 1.map构成 2.map本质 3.map的优点 4.map和multimap区别&#xff1a;map不允许容器中有重复key值元素。multimap允许容器中有重复key值元素。 5.map的构建 6.map的赋值 1️⃣赋值法 2️⃣拷贝赋值法 7.map的成员函数 &#xff08;1&#xff09;inse…

PyAEDT:Ansys Electronics Desktop API 简介

在本文中&#xff0c;我将向您介绍 PyAEDT&#xff0c;这是一个 Python 库&#xff0c;旨在增强您对 Ansys Electronics Desktop 或 AEDT 的体验。PyAEDT 通过直接与 AEDT API 交互来简化脚本编写&#xff0c;从而允许在 Ansys 的电磁、热和机械求解器套件之间无缝集成。通过利…

ubuntu将firewall-config导出为.deb文件

firewall-config ubuntu是canonial 公司维护的&#xff0c;用wireshark测过&#xff0c;开机会给他们公司发遥测&#xff08;开了ufw阻塞所有连接也一样&#xff0c;canonial在里面把代码改了&#xff09;firewall-config是fedora(爱好者维护&#xff0c;公益版本)自带的防火墙…

LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略

LLMs之Code&#xff1a;Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇论文介绍了Qwen2.5-Coder系列模型&#xff0c;这是一个针对代码生成的强大开源大型语言模型。 >> 背景痛点&#xff1a;现有代码大型语言模型的不足&#xff1a;虽然…

H3C NX30Pro刷机教程-2024-11-16

H3C NX30Pro刷机教程-2024-11-16 ref: http://www.ttcoder.cn/index.php/2024/11/03/h3c-nx30pro亲测无需分区备份 路由器-新机初始化设置路由器登录密码telnet进入路由器后台 刷机上传uboot到路由器后台在Windows环境下解压后的软件包中打开 tftpd64.exe在NX30Pro环境下通过以…

FPGA使用Verilog实现CAN通信

FPGA实现CAN通信&#xff08;Verilog&#xff09; 1.作者使用的方法是通过FPGA芯片&#xff08;如Xilinx公司的型号为XC7K325TFFG676-2&#xff09;控制SJA1000T芯片&#xff08;CAN控制器芯片&#xff09;实现CAN通信&#xff0c;如下图所示&#xff1a; 2.熟悉连接方式之后&…

27-压力测试

测试目标 & 测试数据 ● 测试目标 ○ 测试集群的读写性能 / 做集群容量规划 ○ 对 ES 配置参数进行修改&#xff0c;评估优化效果 ○ 修改 Mapping 和 Setting&#xff0c;对数据建模进行优化&#xff0c;并测试评估性能改进 ○ 测试 ES 新版本&#xff0c;结合实际场…

单元测试、集成测试、系统测试、验收测试、压力测试、性能测试、安全性测试、兼容性测试、回归测试(超详细的分类介绍及教学)

目录 1.单元测试 实现单元测试的方法&#xff1a; 注意事项&#xff1a; 2.集成测试 需注意事项&#xff1a; 实现集成测试的方法&#xff1a; 如何实现高效且可靠的集成测试&#xff1a; 3.系统测试 实现系统测试的方法: 须知注意事项&#xff1a; 4.验收测试 实现验…

vxe-grid table 校验指定行单元格的字段,只校验某个列的字段

Vxe UI vue vxe-table 中校验表格行是非常简单的&#xff0c;只需要配置好校验规则&#xff0c;然后调用 validate 方法就可以自动完成校验&#xff0c;但是由于项目淡色特殊需求&#xff0c;在某个单元格的值修改后需要对另一个列的值就行校验&#xff0c;这个时候又不需要全部…

网络基础(4)传输层

既然是传输层首先就要明确实在层状结构的哪里,除开物理层之外分成了四层协议: 到这里上层(应用层)的使用已经没有问题&#xff0c;之前使用的套接字都是在应用层的。 再说端口号 到一个主机收到一个报文的时候&#xff0c;这个报文中一定存在这个报文需要到的主机的ip号。如果…

如何利用WebSockets实现高效的实时通信应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 如何利用WebSockets实现高效的实时通信应用 如何利用WebSockets实现高效的实时通信应用 如何利用WebSockets实现高效的实时通信应…

stm32——通用定时器时钟知识点

&#xff08;该图来自小破站 铁头山羊老师的stm32标准库教学&#xff09;

Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理

文章目录 前言一、探讨问题发生原因1.引入外部公式2.引入外部数据验证二、问题现象排查及解决1.排查公式2.排查数据验证3.特殊处理方式总结前言 作为一种常用的办公软件,Excel被大家所熟知。尽管使用了多年,有时候在使用Excel时候也会发生一些不太常见的现象,需要用心核查下…

Spring中的Bean

Spring中的Bean 目录&#xff1a; 一、Bean的配置 二、Bean的实例化 三、Bean的作用域 四、Bean的装配方式 一、Bean的配置 1.IoC 容器 ​ Spring容器会负责控制程序之间的关系&#xff0c;而不是由程序代码直接控制&#xff0c;这样控制权由应用代码转移到了外部容器&…

无效的目标发行版17和无法连接Maven进程问题

起因&#xff1a;我clean了一个模块的Maven想要重新下&#xff0c;他就开始报错。两次了都是这样。如果和我一样一开始都是好好的&#xff0c;直接找Maven的设置&#xff0c;在运行程序改&#xff0c;jre变成了11.它自己变成了我其他的jdk

猎板PCB罗杰斯板材的应用案例

以下是几个猎板 PCB 与罗杰斯板材结合的具体案例&#xff1a; 案例一&#xff1a;5G 通信基站天线 PCB 在 5G 通信基站的天线系统中&#xff0c;对高频信号的传输和处理要求极高。猎板 PCB 采用罗杰斯板材&#xff0c;凭借其稳定的低介电常数&#xff08;如 RO4003C 板材&…

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址&#xff1a;https://github.com/ollama/ollama 这里以window版本为主&#xff0c;下载链接为&#xff1a;https://ollama.com/download/OllamaSetup.exe。 安装完毕后&#xff0c;桌面小图标有一个小图标&#xff0c;表示已安装成功&…

零基础利用实战项目学会Pytorch

目录 pytorch简介 1.线性回归 2.数据类型 2.1数据类型检验 2.2Dimension0/Rank0 2.3 Dim1/Rank1 2.4 Dim2/Rank2 3.一些方法 4.Pytorch完成分类任务 4.1模型参数 4.2 前向传播 4.3训练以及验证 4.4 三行搞定&#xff01; 4.5 准确率 5、Pytorch完成回归任务 5.…

大数据实验9:Spark安装和编程实践

实验九&#xff1a;Spark基础编程1 一、实验目的 通过实验掌握基本的Spark编程方法&#xff1b;掌握用Spark解决一些基本的数据处理和统计分析&#xff0c;去重、排序等&#xff1b; 二、实验要求 掌握Spark相关shell命令的使用&#xff1b;完成下面的实验内容&#xff0c;…

vue3 element el-table实现表格动态增加/删除/编辑表格行,带有校验规则

需求描述 在项目中遇到需要实现表格动态的新增、编辑、删除表格行的需求&#xff0c;同时带有校验规则 代码解决 点击新增的时候&#xff0c;给新增row默认属性&#xff0c;给相应的默认值&#xff0c;包括给一个isEditor: true&#xff0c;用来区分是否需要编辑。同时当有编…