当前位置: 首页 > 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面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...