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

线性可分SVM摘记

线性可分SVM摘记

  • 0. 线性可分
  • 1. 训练样本到分类面的距离
  • 2. 函数间隔和几何间隔、(硬)间隔最大化
  • 3. 支持向量

\qquad 线性可分的支持向量机是一种二分类模型,支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型,主要取自于李航《统计学习方法》第七章。

0. 线性可分

\qquad 如下图所示,考虑训练数据“线性可分”的情况:
\qquad 在这里插入图片描述
\qquad 假设分类面 w T x + b = 0 \boldsymbol w^T\boldsymbol x+b=0 wTx+b=0 可以将两类数据完整分开,任一训练样本 x \boldsymbol x x输出值(目标值) y y y 满足:

y = sgn ( w T x + b ) = { + 1 , w T x + b > 0 ( x ∈ ℓ 1 ) − 1 , w T x + b < 0 ( x ∈ ℓ 2 ) \qquad\qquad\qquad y=\text{sgn}(\boldsymbol w^T\boldsymbol x+b)=\begin{cases}+1,\quad\boldsymbol w^T\boldsymbol x+b>0\ (\boldsymbol x\in\ell_1)\\-1,\quad\boldsymbol w^T\boldsymbol x+b<0\ (\boldsymbol x\in\ell_2)\end{cases} y=sgn(wTx+b)={+1,wTx+b>0 (x1)1,wTx+b<0 (x2)
\qquad

1. 训练样本到分类面的距离

\qquad 任一样本 x \boldsymbol x x 到分类面的垂直距离为: r = y ( w T x + b ) ∥ w ∥ r=\dfrac{y(\boldsymbol w^T\boldsymbol{x}+b)}{\Vert\boldsymbol w\Vert} r=wy(wTx+b)

∙ \quad\bullet  正例 x i \boldsymbol x_i xi(满足 w T x i + b > 0 , y i = + 1 \boldsymbol w^T\boldsymbol x_i+b>0,\ y_i=+1 wTxi+b>0, yi=+1

\qquad\qquad 在这里插入图片描述

\qquad 假设 x i \boldsymbol x_i xi 到分类面的距离为 r i r_i ri,向量 x ˉ \bar{\boldsymbol x} xˉ 在分类面(满足 w T x ˉ + b = 0 \boldsymbol{w}^T\bar{\boldsymbol{x}}+b=0 wTxˉ+b=0),显然 x i = x ˉ + r i w ∥ w ∥ \boldsymbol x_i=\bar{\boldsymbol x}+r_i\dfrac{\boldsymbol w}{\Vert\boldsymbol w\Vert} xi=xˉ+riww

\qquad 那么
w T x i + b = w T ( x ˉ + r i w ∥ w ∥ ) + b = w T x ˉ + b + w T r i w ∥ w ∥ = r i w T w ∥ w ∥ = r i ∥ w ∥ \qquad\qquad\qquad\begin{aligned}\boldsymbol w^T\boldsymbol x_i+b&=\boldsymbol w^T(\bar{\boldsymbol x}+r_i\frac{\boldsymbol w}{\Vert\boldsymbol w\Vert})+b\\ &=\boldsymbol w^T\bar{\boldsymbol x}+b+\boldsymbol w^Tr_i\frac{\boldsymbol w}{\Vert\boldsymbol w\Vert}\\ &=r_i\frac{\boldsymbol w^T\boldsymbol w}{\Vert\boldsymbol w\Vert}\\ &=r_i\Vert\boldsymbol w\Vert\end{aligned} wTxi+b=wT(xˉ+riww)+b=wTxˉ+b+wTriww=riwwTw=riw

\qquad 可得到正例 x i \boldsymbol x_i xi 到分类面的垂直距离 r i = w T x i + b ∥ w ∥ r_i=\dfrac{\boldsymbol w^T\boldsymbol x_i+b}{\Vert\boldsymbol w\Vert} ri=wwTxi+b

\qquad
∙ \quad\bullet  负例 x j \boldsymbol x_j xj(满足 w T x j + b < 0 , y j = − 1 \boldsymbol w^T\boldsymbol x_j+b<0,\ y_j=-1 wTxj+b<0, yj=1

\qquad\qquad 在这里插入图片描述

\qquad 假设 x j \boldsymbol x_j xj 到分类面的距离为 r j r_j rj,向量 x ˉ \bar{\boldsymbol x} xˉ 在分类面(满足 w T x ˉ + b = 0 \boldsymbol w^T\bar{\boldsymbol x}+b=0 wTxˉ+b=0),显然 x j = x ˉ − r j w ∥ w ∥ \boldsymbol x_j=\bar{\boldsymbol x}-r_j\dfrac{\boldsymbol w}{\Vert\boldsymbol w\Vert} xj=xˉrjww

\qquad 那么
w T x j + b = w T ( x ˉ − r j w ∥ w ∥ ) + b = w T x ˉ + b − w T r j w ∥ w ∥ = − r j w T w ∥ w ∥ = − r j ∥ w ∥ \qquad\qquad\qquad\begin{aligned}\boldsymbol w^T\boldsymbol x_j+b&=\boldsymbol w^T(\bar{\boldsymbol x}-r_j\frac{\boldsymbol w}{\Vert\boldsymbol w\Vert})+b\\ &=\boldsymbol w^T\bar{\boldsymbol x}+b-\boldsymbol w^Tr_j\frac{\boldsymbol w}{\Vert\boldsymbol w\Vert}\\ &=-r_j\frac{\boldsymbol w^T\boldsymbol w}{\Vert\boldsymbol w\Vert}\\ &=-r_j\Vert\boldsymbol w\Vert\end{aligned} wTxj+b=wT(xˉrjww)+b=wTxˉ+bwTrjww=rjwwTw=rjw
\qquad 可得到负例 x j \boldsymbol x_j xj 到分类面的垂直距离 r j = − w T x j + b ∥ w ∥ r_j=-\dfrac{\boldsymbol w^T\boldsymbol x_j+b}{\Vert\boldsymbol w\Vert} rj=wwTxj+b
\qquad

2. 函数间隔和几何间隔、(硬)间隔最大化

\qquad 由于任一训练样本 x i \boldsymbol x_i xi 的输出值 y y y 满足: y = { + 1 , w T x i + b > 0 ( ∀ x i ∈ ℓ 1 ) − 1 , w T x i + b < 0 ( ∀ x i ∈ ℓ 2 ) y=\begin{cases}+1,\quad\boldsymbol w^T\boldsymbol x_i+b>0\ \ (\forall\ \boldsymbol x_i\in\ell_1)\\-1,\quad\boldsymbol w^T\boldsymbol x_i+b<0\ \ (\forall\ \boldsymbol x_i\in\ell_2)\end{cases} y={+1,wTxi+b>0  ( xi1)1,wTxi+b<0  ( xi2),可定义两种间隔 ( margin ) (\text{margin}) (margin)来描述“训练样本 x i \boldsymbol x_i xi 到分类面的远近”。

\qquad
∙ \quad\bullet  函数间隔 ( functional margin ) (\text{functional margin}) (functional margin)

γ ^ i = y i ( w T x i + b ) = ∣ w T x i + b ∣ \qquad\qquad\hat{\gamma}_i=y_i(\boldsymbol w^T\boldsymbol x_i+b)=\vert\boldsymbol w^T\boldsymbol x_i+b\vert γ^i=yi(wTxi+b)=wTxi+b

函数间隔只能够相对地描述“训练样本 x i \boldsymbol x_i xi 到分类面的远近”。
例如, H 1 : w T x + b = 0 \mathcal H_1:\ \boldsymbol w^T\boldsymbol x+b=0 H1: wTx+b=0 H 2 : λ w T x + λ b = 0 \mathcal H_2:\ \lambda\boldsymbol w^T\boldsymbol x+\lambda b=0 H2: λwTx+λb=0 实际上是指同一个分类面(假设 λ > 0 \lambda>0 λ>0
 
对训练样本 x i \boldsymbol x_i xi 而言,却有 { γ ^ 1 i = ∣ w T x i + b ∣ γ ^ 2 i = λ ∣ w T x i + b ∣ \begin{cases}\hat{\gamma}_{1i}=\vert\boldsymbol w^T\boldsymbol x_i+b\vert\\ \hat{\gamma}_{2i}=\lambda\vert\boldsymbol w^T\boldsymbol x_i+b\vert \end{cases} {γ^1i=wTxi+bγ^2i=λwTxi+b,函数间隔 γ ^ 2 i = λ γ ^ 1 i \hat{\gamma}_{2i}=\lambda\hat{\gamma}_{1i} γ^2i=λγ^1i

\qquad
∙ \quad\bullet  几何间隔 ( geometricl margin ) (\text{geometricl margin}) (geometricl margin)

γ i = y i r i = y i ( w T x i + b ) ∥ w ∥ = ∣ w T x i + b ∣ ∥ w ∥ \qquad\qquad \gamma_i=y_ir_i=\dfrac{y_i(\boldsymbol w^T\boldsymbol x_i+b)}{\Vert\boldsymbol w\Vert}=\dfrac{\vert\boldsymbol w^T\boldsymbol x_i+b\vert}{\Vert\boldsymbol w\Vert} γi=yiri=wyi(wTxi+b)=wwTxi+b

几何间隔就是“训练样本 x i \boldsymbol x_i xi 到分类面的垂直距离”,也就是“规范化的函数间隔”。
 
上例中, { γ 1 i = γ ^ 1 i ∥ w ∥ = ∣ w T x i + b ∣ ∥ w ∥ γ 2 i = γ ^ 2 i ∥ λ w ∥ = λ ∣ w T x i + b ∣ ∥ λ w ∥ = ∣ w T x i + b ∣ ∥ w ∥ \begin{cases}\gamma_{1i}=\dfrac{\hat{\gamma}_{1i}}{\Vert\boldsymbol w\Vert}=\dfrac{\vert\boldsymbol w^T\boldsymbol x_i+b\vert}{\Vert\boldsymbol w\Vert} \\ \\\gamma_{2i}=\dfrac{\hat{\gamma}_{2i}}{\Vert\lambda\boldsymbol w\Vert}=\dfrac{\lambda\vert\boldsymbol w^T\boldsymbol x_i+b\vert}{\Vert\lambda\boldsymbol w\Vert}=\dfrac{\vert\boldsymbol w^T\boldsymbol x_i+b\vert}{\Vert\boldsymbol w\Vert} \end{cases} γ1i=wγ^1i=wwTxi+bγ2i=λwγ^2i=λwλwTxi+b=wwTxi+b,几何间隔 γ 1 i = γ 2 i \gamma_{1i}=\gamma_{2i} γ1i=γ2i,仍然相等。

\qquad 显然,函数间隔几何间隔之间的关系为:

γ = γ ^ ∥ w ∥ \qquad\qquad\textcolor{crimson}{\gamma=\dfrac{\hat{\gamma}}{\Vert\boldsymbol w\Vert}} γ=wγ^

\qquad
∙ \quad\bullet  以最大化训练样本的几何间隔为目标函数,并定义约束最优化问题

\qquad 约束最优化问题(1)

max ⁡ w , b γ s . t . y i ( w T x i + b ) ∥ w ∥ ≥ γ , ∀ x i \qquad\qquad\qquad\textcolor{indigo}{\begin{aligned}&\max_{\boldsymbol w,b}\ \gamma\\ &\ s.t.\ \ \ \dfrac{y_i(\boldsymbol w^T\boldsymbol x_i+b)}{\Vert\boldsymbol w\Vert}\ge \gamma,\quad \forall\ \boldsymbol x_i\end{aligned}} w,bmax γ s.t.   wyi(wTxi+b)γ, xi

也就是,在确保所有训练样本到分类面的垂直距离都大于 γ \gamma γ 的前提下,尽可能让(几何)间隔最大。

\qquad 利用两种间隔之间的关系 γ = γ ^ ∥ w ∥ \gamma=\dfrac{\hat{\gamma}}{\Vert\boldsymbol w\Vert} γ=wγ^,在约束最优化问题(1)中使用函数间隔 γ ^ \hat{\gamma} γ^ 来描述几何间隔 γ \gamma γ,也就是

\qquad 约束最优化问题(2)

max ⁡ w , b γ ^ ∥ w ∥ s . t . y i ( w T x i + b ) ≥ γ ^ , ∀ x i \qquad\qquad\qquad\textcolor{indigo}{\begin{aligned}&\max_{\boldsymbol w,b}\ \dfrac{\hat{\gamma}}{\Vert\boldsymbol w\Vert}\\ &\ s.t.\ \ \ y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge \hat{\gamma},\quad \forall\ \boldsymbol x_i\end{aligned}} w,bmax wγ^ s.t.   yi(wTxi+b)γ^, xi

\qquad  
\qquad 考虑满足约束最优化问题(2)的同一个分类面的两种表示 H 1 : ( w , b ) \mathcal H_1:(\boldsymbol w,b) H1:(w,b) H 2 : ( λ w , λ b ) \mathcal H_2:(\lambda\boldsymbol w,\lambda b) H2:(λw,λb),对于任一训练样本 x i \boldsymbol x_i xi 而言( λ > 0 \lambda>0 λ>0),那么:

\qquad H 1 : w T x + b = 0 \quad\textcolor{firebrick}{\mathcal H_1}:\ \boldsymbol w^T\boldsymbol x+b=0 H1: wTx+b=0   (函数间隔为 γ ^ = ∣ w T x i + b ∣ \hat\gamma=\vert\boldsymbol w^T\boldsymbol x_i+b\vert γ^=wTxi+b

⟹ { 目标函数值: γ ^ ∥ w ∥ 约束函数:  y i ( w T x i + b ) ≥ γ ^ , ∀ x i \qquad\qquad\quad\Longrightarrow\quad\begin{cases}目标函数值:\quad\dfrac{\hat\gamma}{\Vert\boldsymbol w\Vert}\\ 约束函数: \quad y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge \hat\gamma,\quad \forall\ \boldsymbol x_i\end{cases} 目标函数值:wγ^约束函数: yi(wTxi+b)γ^, xi

\qquad H 2 : λ w T x + λ b = 0 \quad\textcolor{firebrick}{\mathcal H_2}:\ \lambda\boldsymbol w^T\boldsymbol x+\lambda b=0 H2: λwTx+λb=0 (函数间隔为 λ γ ^ \lambda\hat\gamma λγ^

⟹ { 目标函数值: λ γ ^ ∥ λ w ∥ 约束函数:  y i λ ( w T x i + b ) ≥ λ γ ^ , ∀ x i \qquad\qquad\quad\Longrightarrow\quad\begin{cases}目标函数值:\quad\dfrac{\lambda\hat\gamma}{\Vert\lambda\boldsymbol w\Vert}\\ 约束函数: \quad y_i\lambda(\boldsymbol w^T\boldsymbol x_i+b) \ge \lambda\hat\gamma,\quad \forall\ \boldsymbol x_i\end{cases} 目标函数值:λwλγ^约束函数: yiλ(wTxi+b)λγ^, xi
\qquad
\qquad 显然,权值 ( w , b ) (\boldsymbol w,b) (w,b) 与其同比例的缩放值 ( λ w , λ b ) (\lambda\boldsymbol w,\lambda b) (λw,λb) 对于约束最优化问题(2)而言是没有影响的。

\qquad
∙ \quad\bullet  构造凸二次规划问题

\qquad 约束最优化问题(2)中,可以简单地取函数间隔 γ ^ = 1 \hat\gamma=1 γ^=1

假设待求解的权值为 ( w , b ) (\boldsymbol w,b) (w,b), 样本 x \boldsymbol x x w T x + b = 0 \boldsymbol w^T\boldsymbol x+b=0 wTx+b=0 的几何间隔为 γ ^ ∥ w ∥ \dfrac{\hat\gamma}{\Vert\boldsymbol w\Vert} wγ^
函数间隔 γ ^ = 1 \hat\gamma=1 γ^=1 时的几何间隔写为 1 ∥ λ ′ w ∥ \dfrac{1}{\Vert\lambda^{\prime}\boldsymbol w\Vert} λw1,也就是 ( w , b ) (\boldsymbol w,b) (w,b) 缩放为了 ( λ ′ w , λ ′ b ) , λ ′ = 1 / γ ^ (\lambda^{\prime}\boldsymbol w,\lambda^{\prime}b),\ \lambda^{\prime}=1/\hat\gamma (λw,λb), λ=1/γ^
w T x + b = 0 \boldsymbol w^T\boldsymbol x+b=0 wTx+b=0 λ ′ w T x + λ ′ b = 0 \lambda^{\prime}\boldsymbol w^T\boldsymbol x+\lambda^{\prime}b=0 λwTx+λb=0 是同一个分类面

\qquad 那么,约束最优化问题(2)就可以写为:

max ⁡ w , b γ ^ ∥ w ∥ s . t . y i ( w T x i + b ) ≥ γ ^ , ∀ x i ⟹ γ ^ = 1 max ⁡ w , b 1 ∥ w ∥ s . t . y i ( w T x i + b ) ≥ 1 , ∀ x i \qquad\qquad\textcolor{darkblue}{\begin{aligned}&\max_{\boldsymbol w,b}\ \dfrac{\hat\gamma}{\Vert\boldsymbol w\Vert}\\ &\ s.t.\ \ \ y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge \hat\gamma,\ \forall\ \boldsymbol x_i\end{aligned}}\quad\overset{\hat\gamma=1}\Longrightarrow\qquad\textcolor{royalblue}{\begin{aligned}&\max_{\boldsymbol w,b}\ \dfrac{1}{\Vert\boldsymbol w\Vert}\\ &\ s.t.\ \ \ y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge 1,\ \forall\ \boldsymbol x_i\end{aligned}} w,bmax wγ^ s.t.   yi(wTxi+b)γ^,  xiγ^=1w,bmax w1 s.t.   yi(wTxi+b)1,  xi

\qquad
\qquad 又由于 max ⁡ 1 ∥ w ∥ ⟺ min ⁡ 1 2 ∥ w ∥ 2 \max\ \dfrac{1}{\Vert\boldsymbol w\Vert}\Longleftrightarrow\min\ \dfrac{1}{2}\Vert\boldsymbol w\Vert^2 max w1min 21w2,因此可以构造出一个凸二次规划问题

\qquad 约束最优化问题(3)

min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , ∀ x i \qquad\qquad\qquad\textcolor{indigo}{\begin{aligned}&\min_{\boldsymbol w,b}\ \dfrac{1}{2}\Vert\boldsymbol w\Vert^2\\ &\ s.t.\ \ \ y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge 1,\quad \forall\ \boldsymbol x_i\end{aligned}} w,bmin 21w2 s.t.   yi(wTxi+b)1, xi

\qquad

3. 支持向量

\qquad 支持向量 ( support vector ) (\text{support\ vector}) (support vector) 是指距离分类面最近的训练样本(红色 + 点),两个(红色点线)超平面 w T x + b = 1 \boldsymbol w^T\boldsymbol x+b=1 wTx+b=1 w T x + b = − 1 \boldsymbol w^T\boldsymbol x+b=-1 wTx+b=1 之间的距离,称为间隔 ( margin ) (\text{margin}) (margin)
\qquad 在这里插入图片描述
\qquad 考察该凸二次规划最优化问题

min ⁡ w , b 1 2 ∥ w ∥ 2 s . t . y i ( w T x i + b ) ≥ 1 , ∀ x i \qquad\qquad\qquad\begin{aligned}&\min_{\boldsymbol w,b}\ \dfrac{1}{2}\Vert\boldsymbol w\Vert^2\\ &\ s.t.\ \ \ y_i(\boldsymbol w^T\boldsymbol x_i+b) \ge 1,\quad \forall\ \boldsymbol x_i\end{aligned} w,bmin 21w2 s.t.   yi(wTxi+b)1, xi

\qquad 支持向量也是使得约束条件的等式成立的点,即: y ( w T x + b ) = 1 y(\boldsymbol w^T\boldsymbol x+b)=1 y(wTx+b)=1。在线性可分的情况下,选择不同的点作为支持向量,就可以确定不同的分离超平面 w T x + b = 0 \boldsymbol w^T\boldsymbol x+b=0 wTx+b=0

  • (正例的)支持向量 x i , y i = + 1 : y i ( w T x i + b ) = 1 ⇒ H 1 : w T x i + b = 1 \boldsymbol x_i,y_i=+1:\ y_i(\boldsymbol w^T\boldsymbol x_i+b)=1 \qquad\Rightarrow\quad H_1:\boldsymbol w^T\boldsymbol x_i+b=1 xi,yi=+1: yi(wTxi+b)=1H1:wTxi+b=1
    其余的 (正例的)训练样本满足 w T x i + b > 1 \boldsymbol w^T\boldsymbol x_i+b>1 wTxi+b>1
  • (负例的)支持向量 x j , y j = − 1 : y j ( w T x j + b ) = 1 ⇒ H 2 : w T x j + b = − 1 \boldsymbol x_j,y_j=-1:y_j(\boldsymbol w^T\boldsymbol x_j+b)=1 \qquad\Rightarrow\quad H_2:\boldsymbol w^T\boldsymbol x_j+b=-1 xj,yj=1:yj(wTxj+b)=1H2:wTxj+b=1
    其余的 (负例的)训练样本满足 w T x i + b < − 1 \boldsymbol w^T\boldsymbol x_i+b<-1 wTxi+b<1
  • 两个超平面 H 1 H_1 H1 H 2 H_2 H2 之间的间隔为 2 ∥ w ∥ \dfrac{2}{\Vert\boldsymbol w\Vert} w2

\qquad
\qquad
【写在最后】SVM的资料太多了,越写越觉得没什么特别的内容值得去写。攒在草稿箱里太久,发出来就当留个记录吧。

相关文章:

线性可分SVM摘记

线性可分SVM摘记 0. 线性可分1. 训练样本到分类面的距离2. 函数间隔和几何间隔、(硬)间隔最大化3. 支持向量 \qquad 线性可分的支持向量机是一种二分类模型&#xff0c;支持向量机通过核技巧可以成为非线性分类器。本文主要分析了线性可分的支持向量机模型&#xff0c;主要取自…...

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃

LabVIEW在调用image.cpp或drawmgr.cpp因为DAbort而崩溃 出现下列问题&#xff0c;如何解决&#xff1f; 1. LabVIEW 程序因image.cpp或drawmgr.cpp中的错误而崩溃 2. 正在通过cRIO-9034运行独立的LabVIEW应用程序&#xff0c;但它因drawmgr.cpp中的错误而崩溃 …...

nodejs微信小程序+python+PHP贵州旅游系统的设计与实现-计算机毕业设计推荐MySQL

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

WebUI自动化学习(Selenium+Python+Pytest框架)003

1.元素操作 在成功定位到元素之后&#xff0c;我们需要对元素进行一些操作动作。常用的元素操作动作有&#xff1a; &#xff08;1&#xff09;send_keys() 键盘动作&#xff1a;向浏览器发送一个内容&#xff0c;通常用于输入框输入内容或向浏览器发送快捷键 &#xff08;2…...

python+Appium自动化:python多线程多并发启动appium服务

Python启动Appium 服务 使用Dos命令或者bat批处理来手动启动appium服务&#xff0c;启动效率低下。如何将启动Appium服务也实现自动化呢&#xff1f; 这里需要使用subprocess模块&#xff0c;该模块可以创建新的进程&#xff0c;并且连接到进程的输入、输出、错误等管道信息&…...

【计算机网络笔记】802.11无线局域网

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…...

用C++和python混合编写数据采集程序?

之前看过一篇文章&#xff0c;主要阐述的就是多种语言混合编写爬虫程序&#xff0c;结合各种语言自身优势写一个爬虫代码是否行得通&#xff1f;觉得挺有意思的&#xff0c;带着这样的问题&#xff0c;我尝试着利用我毕生所学写了一段C和python混合爬虫程序&#xff0c;目前运行…...

Android HCI日志分析案例1

案例1--蓝牙扫描设备过程分析 应用层发起搜索蓝牙设备&#xff0c;Android 官方提供的蓝牙扫描方式有三种&#xff0c;分别如下&#xff1a; BluetoothAdapter.startDiscovery(); //可以扫描经典蓝牙和BLE两种。BluetoothAdapter.startLeScan();//扫描低功耗蓝牙&#xff0c;…...

LangChain(0.0.339)官方文档四:Prompts下——prompt templates的存储、加载、组合和部分格式化

文章目录 一、 部分提示模板1.1 使用字符串值进行部分格式化&#xff08;Partial with strings&#xff09;1.2 使用函数进行部分格式化&#xff08;Partial with functions&#xff09; 二、Prompt pipelining2.1 String prompt pipelining2.2 Chat prompt pipelining 三、使用…...

鸿蒙开发笔记

最近比较火&#xff0c;本身也是做前端的&#xff0c;就抽空学习了下。对前端很友好 原视频地址&#xff1a;黑马b站鸿蒙OS视频 下载安装跟着视频或者文档就可以了。如果你电脑上安装的有node&#xff0c;但是开发工具显示你没安装&#xff0c;不用动咱们的node&#xff0c;直…...

「计算机网络」Cisco Packet Tracker计算机网络仿真器的使用

介绍 Cisco Packet Tracker&#xff1a;网络仿真工具&#xff0c;用于模拟网络配置。 &#xff08;一&#xff09; 配置交换机&#xff08;Switch&#xff09;&#xff08;通过 带外管理&#xff09; 带外&#xff1a;Out-of-Band, OOB写在前面&#xff1a;如何打开Console页…...

【已解决】if lock.acquire(block, timeout):KeyboardInterrupt

问题描述 Traceback (most recent call last): File "/media/visionx/monica/project/ResShift/app.py", line 134, in <module> demo.launch(shareFalse) File "/home/visionx/anaconda3/envs/ResShift/lib/python3.9/site-packages/gradio/bloc…...

将Excel中的数据导入shell脚本,并调用expect脚本

主脚本test.sh #!/bin/bash # 设置超时时间 set timeout 240 # 将 Excel 文件转换为 CSV 格式 # test.xlsx > temp.csv # 初始化一个二维数组 declare -A data # 逐行读取 CSV 文件&#xff0c;并将每个单元格的数据存储在二维数组中 row1 while IFS, read -r col1 col2 co…...

elementui el-table用span-method方法对相同的列名或行名进行合并

看到的一篇文章 同理 如果对第二列进行合并的话copy一下第一个方法&#xff0c;让值赋给第二个数组就可以 // 合并方法mergeCells({ row, column , rowIndex, columnIndex }) {debugger;if (columnIndex 1) {const _row this.spanArr[rowIndex];const _col _row > 0 ? …...

汇编语言实现音乐播放器

目标程序 用汇编语言实现一个音乐播放器&#xff0c;并支持点歌 Overview 乐曲是按照一定的高低、长短和强弱关系组成的音调&#xff0c;在一首乐曲中&#xff0c;每个音符的音高和音长与频率和节拍有关&#xff0c;因此我们要分别为3首要演奏的乐曲定义一个频率表和一个节拍…...

大型网站系统架构演化(Web)

大型网站系统架构演化 大型网站系统架构演化需要关注的维度涉及的技术演进过程单体架构垂直架构使用缓存改善网站性能缓存与数据库的数据一致性问题缓存技术对比Redis分布式存储方案Redis集群切片的常见方式Redis数据类型Redis 淘汰算法使用服务集群改善网站并发能力 大型网站系…...

三轴加速度计LIS2DW12开发(2)----基于中断信号获取加速度数据

三轴加速度计LIS2DW12开发.2--轮基于中断信号获取加速度数据 概述视频教学样品申请生成STM32CUBEMX串口配置IIC配置CS和SA0设置INT1设置串口重定向参考程序初始换管脚获取ID复位操作BDU设置开启INT1中断设置传感器的量程配置过滤器链配置电源模式设置输出数据速率中断判断加速…...

Shell循环:whileuntil

一、特点&#xff1a;循环次数[一定]是固定的 二、while语句结构 while 条件测试 do 循环体 done 当条件测试成立&#xff08;条件测试为真&#xff09;&#xff0c;执行循环体 演示&#xff1a; 需求&#xff1a;每秒显示一个数字&#xff0c;一…...

Redis 安装部署

文章目录 1、前言2、安装部署2.1、单机模式2.1.1、通过 yum 安装&#xff08;不推荐&#xff0c;版本老旧&#xff09;2.1.1、通过源码编译安装&#xff08;推荐&#xff09; 2.2、主从模式2.3、哨兵模式2.4、集群模式2.5、其他命令2.6、其他操作系统 3、使用3.1、Java 代码 —…...

项目中遇到的半导体公司

作为一个技术人&#xff0c;我并不是亲美&#xff0c;从技术的实事求是角度讲&#xff0c;不得不感叹欧美的半导体技术。他们的datasheet能学到的东西太多太多&#xff1b;我甚至佩服他们缜密的逻辑。从他们的文章中领悟我们技术到底有多low&#xff0c;没办法一个一个了解所有…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...