支持向量機 SVM | 線性可分:公式推導

目錄

  • 一. SVM的優越性
  • 二. SVM算法推導
    • 小節
    • 概念

在開始講述SVM算法之前,我們先來看一段定義:

'''
支持向量機(Support VecorMachine, SVM)本身是一個二元分類算法,支持線性分類和非線性分類的分類應用,同時通過OvR或者OvO的方式可以應用在多元分類領域中能夠直接將SVM應用于回歸應用中
在不考慮集成學習算法或者特定的數據集時,SVM在分類算法中可以說是一種特別優秀的算法
'''

在這里插入圖片描述

一. SVM的優越性

在Logistic回歸算法中:
????我們追求是尋找一條決策邊界,即找到一條能夠正確劃分所有訓練樣本的邊界;
????當所有樣本正確劃分時,損失函數已降至最低,模型不再優化

在SVM算法中:
????我們追求是尋找一條最優決策邊界

	那什么是最優呢?SVM提出的基本思想是,尋找一條決策邊界,使得該邊界到兩邊最近的點間隔最大這樣做得目的在于:相比于其他邊界,svm尋找到的邊界對于樣本的局部擾動容忍性最好,對新進樣本更容易判斷正確;也就是說,此時決策邊界具有最好的魯棒性

在這里插入圖片描述

二. SVM算法推導

	注意:下面講述的是線性分類

這里我們換一種思路尋找最佳決策邊界:

首先假設決策邊界為
y = ω → ? x → + b y= \overrightarrow{\omega }\cdot \overrightarrow{x} +b y=ω ?x +b

公式解釋1:
?
為什么要這么設方程呢?

我們希望通過向量點乘來確定距離
換句話說,希望通過向量點乘來確定正負樣本的邊界

在這里插入圖片描述

為了尋找最佳決策邊界,我們可以:
以上述決策邊界為中心線,向兩邊做平行線,讓這兩條平行線過兩邊最近的樣本點;此時會形成一條“街道”,最佳決策邊界就是使這條街道最寬的那個決策邊界。

在這里插入圖片描述

補充一點:
在Logistic回歸算法中,我們人為的將數據集設為1,0
在SVM算法中,我們人為的將數據集設為1,-1
?
參數說明:

width:街寬
?
ω → \overrightarrow{\omega } ω :決策邊界的法向量
?
u ? → \overrightarrow{u_{-} } u?? ?:街邊上的負樣本向量
?
u + → \overrightarrow{u_{+} } u+? ?:街邊上的正樣本向量
?
單位向量: a → ∥ a ∥ \frac{\overrightarrow{a}}{\left \| a \right \| } aa ?

向量點乘幾何的意義:
a → ? b → = ∣ a → ∣ ∣ b → ∣ cos ? θ \overrightarrow{a}\cdot \overrightarrow{b} =\left | \overrightarrow{a} \right| |\overrightarrow{b} | \cos \theta a ?b = ?a ?b cosθ
可以理解為 a → \overrightarrow{a} a b → \overrightarrow{b} b 上的投影長度乘以 ∣ b → ∣ |\overrightarrow{b}| b 的模長
在這里插入圖片描述

對于訓練集中的任何一個數據,我們總會取到一個合適長度的 ω → \overrightarrow{\omega } ω ,以及一個適合的常數b,得到:
{ ω → ? u + → + b ≥ 1 ω → ? u ? → + b ≤ ? 1 \left\{\begin{matrix}\overrightarrow{\omega }\cdot \overrightarrow{u_{+} } +b\ge 1 \\\overrightarrow{\omega }\cdot \overrightarrow{u_{-} } +b\le -1 \end{matrix}\right. {ω ?u+? ?+b1ω ?u?? ?+b?1?

即可以合并為: y i ( ω → ? u i → + b ) ≥ 1 y_{i} (\overrightarrow{\omega }\cdot \overrightarrow{u_{i} } +b)\ge1 yi?(ω ?ui? ?+b)1
而對于街邊點而言,滿足
y i ( ω → ? u i → + b ) = 1 y_{i} (\overrightarrow{\omega }\cdot \overrightarrow{u_{i} } +b)=1 yi?(ω ?ui? ?+b)=1

	注意:這些街邊點對于決定決策邊界取決定性作用,因此被稱為支持向量

這樣,我們就可以用數學方式將上述街寬抽象出來:
w i d t h = ( u + → ? u ? → ) ? w → ∥ w ∥ width = (\overrightarrow{u_{+}}-\overrightarrow{u_{-}} )\cdot \frac{\overrightarrow{w}}{\left \| w \right \| } width=(u+? ??u?? ?)?ww ?
推導式子,就可以進一步得到:

w i d t h = ( u + → ? u ? → ) ? w → ∥ w ∥ width = (\overrightarrow{u_{+}}-\overrightarrow{u_{-}} )\cdot \frac{\overrightarrow{w}}{\left \| w \right \| } width=(u+? ??u?? ?)?ww ?

??????? = u + → ? ω → ∥ ω → ∥ ? u ? → ? ω → ∥ ω → ∥ =\frac{\overrightarrow{u_{+}}\cdot\overrightarrow{\omega _{}} }{\left \| \overrightarrow{\omega\mathrm{} } \right \| }-\frac{\overrightarrow{u_{-}}\cdot\overrightarrow{\omega _{}} }{\left \| \overrightarrow{\omega\mathrm{} } \right \| } =ω u+? ??ω? ???ω u?? ??ω? ??

??????? = 1 ? b ∥ w → ∥ ? ? 1 ? b ∥ w → ∥ =\frac{1-b}{\left \| \overrightarrow{w} \right \| } -\frac{-1-b}{\left \| \overrightarrow{w} \right \| } =w 1?b??w ?1?b?

??????? = 2 ∥ w → ∥ =\frac{2}{\left \| \overrightarrow{w} \right \| } =w 2?

此時,我們要求街寬最大,即是求 m i n ( ∥ w → ∥ ) min({\left \| \overrightarrow{w} \right \| }) min( ?w ?),這里為了后續求導方便,將值寫成 m i n ( 1 2 ∥ w → ∥ 2 ) min(\frac{1}{2}\left \| \overrightarrow{w} \right \| ^{2} ) min(21? ?w ?2)

需要明確,"街邊"最大值的條件是基于支持向量的,而支持向量是屬于數據集的,因此我們的問題就變成了:
{ m i n ( 1 2 ∥ w → ∥ 2 ) s . t . y i ( ω → ? x → + b ) ? 1 ≥ 0 \left\{\begin{matrix}min(\frac{1}{2}\left \| \overrightarrow{w} \right \| ^{2} ) \\s.t. y_{i} (\overrightarrow{\omega }\cdot \overrightarrow{x } +b)-1\ge0 \end{matrix}\right. {min(21? ?w ?2)s.t.yi?(ω ?x +b)?10?

這是一個典型的條件極值問題,我們用拉格朗日乘數法,得到拉格朗日函數為:
L = 1 2 ∥ w → ∥ 2 ? ∑ i = 1 m β i [ y i ( ω → ? x → + b ) ? 1 ] , ( β i ≥ 0 ) L = \frac{1}{2}\left \| \overrightarrow{w} \right \| ^{2} -\sum_{i=1}^{m} \beta _{i}[ y_{i} (\overrightarrow{\omega }\cdot \overrightarrow{x } +b)-1] ,(\beta _{i}\ge 0) L=21? ?w ?2?i=1m?βi?[yi?(ω ?x +b)?1],(βi?0)

這里的約束是不等式約束,所以要使用KKT條件(KKT是拉格朗日乘數法的一種泛化形式,此時 β i ≥ 0 \beta _{i}\ge0 βi?0),而KKT條件的計算方式為: max ? β ≥ 0 min ? w , b L ( w , b , β ) \max_{\beta \ge 0} \min_{w,b}L(w,b,\beta ) β0max?w,bmin?L(w,b,β)

? L ? w = w ? ∑ i = 1 m β i x ( i ) y ( i ) = 0 ? w = ∑ i = 1 m β i x ( i ) y ( i ) \frac{\partial L}{\partial w} =w-\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)}=0\Rightarrow w=\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} ?w?L?=w?i=1m?βi?x(i)y(i)=0?w=i=1m?βi?x(i)y(i)

? L ? b = ? ∑ i = 1 m β i y ( i ) = 0 ? 0 = ∑ i = 1 m β i y ( i ) \frac{\partial L}{\partial b} =-\sum_{i=1}^{m} \beta _{i}y^{(i)}=0\Rightarrow 0=\sum_{i=1}^{m} \beta _{i} y^{(i)} ?b?L?=?i=1m?βi?y(i)=0?0=i=1m?βi?y(i)

公式解釋:
β \beta β是每個樣本對應的拉格朗日乘子

對于非支持向量而言, β = 0 \beta=0 β=0,即對非支持向量無約束

則: y ( i ) ? 0 = 0 y^{(i)}*0=0 y(i)?0=0

對于支持向量而言, β > 0 \beta>0 β>0,即對支持向量有約束

則: 正樣本支持向量 ? 1 + 負樣本支持向量 ? ( ? 1 ) = 0 正樣本支持向量\ast 1+負樣本支持向量\ast (-1)=0 正樣本支持向量?1+負樣本支持向量?(?1)=0

此時 L ( β ) L(\beta) L(β)為:

L ( β ) = 1 2 ∥ w → ∥ 2 ? ∑ i = 1 m β i [ y ( i ) ( ω T ? x ( i ) + b ) ? 1 ] L(\beta)=\frac{1}{2}\left \| \overrightarrow{w} \right \| ^{2} -\sum_{i=1}^{m} \beta _{i}[y^{(i)} (\omega ^{T} \cdot x^{(i)} +b)-1] L(β)=21? ?w ?2?i=1m?βi?[y(i)(ωT?x(i)+b)?1]

????? = 1 2 ω T ω ? ∑ i = 1 m β i y ( i ) ω T ? x ( i ) ? b ∑ i = 1 m β i y ( i ) + ∑ i = 1 m β i =\frac{1}{2}\omega ^{T}\omega -\sum_{i=1}^{m} \beta _{i}y^{(i)}\omega ^{T} \cdot x^{(i)}-b\sum_{i=1}^{m} \beta _{i}y^{(i)}+\sum_{i=1}^{m} \beta _{i} =21?ωTω?i=1m?βi?y(i)ωT?x(i)?bi=1m?βi?y(i)+i=1m?βi?

????? = 1 2 ω T ∑ i = 1 m β i x ( i ) y ( i ) ? ∑ i = 1 m β i y ( i ) ω T x ( i ) + ∑ i = 1 m β i =\frac{1}{2}\omega ^{T}\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} -\sum_{i=1}^{m} \beta _{i}y^{(i)}\omega ^{T}x^{(i)}+\sum_{i=1}^{m} \beta _{i} =21?ωTi=1m?βi?x(i)y(i)?i=1m?βi?y(i)ωTx(i)+i=1m?βi?

????? = ? 1 2 ω T ∑ i = 1 m β i x ( i ) y ( i ) + ∑ i = 1 m β i =-\frac{1}{2}\omega ^{T}\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} +\sum_{i=1}^{m} \beta _{i} =?21?ωTi=1m?βi?x(i)y(i)+i=1m?βi?

????? = ? 1 2 ( ∑ j = 1 m β j x ( j ) y ( j ) ) T ( ∑ i = 1 m β i x ( i ) y ( i ) ) + ∑ i = 1 m β i =-\frac{1}{2}(\sum_{j=1}^{m} \beta _{j} x^{(j)}y^{(j)})^{T}(\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} )+\sum_{i=1}^{m} \beta _{i} =?21?(j=1m?βj?x(j)y(j))T(i=1m?βi?x(i)y(i))+i=1m?βi?

????? = ? 1 2 ∑ j = 1 m β j x ( j ) T y ( j ) ∑ i = 1 m β i x ( i ) y ( i ) + ∑ i = 1 m β i =-\frac{1}{2}\sum_{j=1}^{m} \beta _{j} x^{(j)^{T}}y^{(j)}\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} +\sum_{i=1}^{m} \beta _{i} =?21?j=1m?βj?x(j)Ty(j)i=1m?βi?x(i)y(i)+i=1m?βi?

????? = ∑ i = 1 m β i ? 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( j ) T x ( i ) =\sum_{i=1}^{m} \beta _{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m} \beta _{i}\beta _{j} y^{(i)}y^{(j)}x^{(j)^{T}} x^{(i)} =i=1m?βi??21?i=1m?j=1m?βi?βj?y(i)y(j)x(j)Tx(i)

即: { L ( β ) = ∑ i = 1 m β i ? 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( j ) T x ( i ) s . t : ∑ i = 1 m β i y ( i ) = 0 \left\{\begin{matrix}L(\beta)=\sum_{i=1}^{m} \beta _{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m} \beta _{i}\beta _{j} y^{(i)}y^{(j)}x^{(j)^{T}} x^{(i)} \\s.t:\sum_{i=1}^{m} \beta _{i} y^{(i)}=0 \end{matrix}\right. {L(β)=i=1m?βi??21?i=1m?j=1m?βi?βj?y(i)y(j)x(j)Tx(i)s.t:i=1m?βi?y(i)=0?

解到這一步,我們發現L函數只與 β \beta β有關,所以此時可以直接極大化我們的優化函數,且
max ? β ≥ 0 l ( β ) ? min ? β ≥ 0 ? l ( β ) \max_{\beta \ge 0}l(\beta ) \longrightarrow \min_{\beta \ge 0}-l(\beta ) β0max?l(β)?β0min??l(β)
因此,求解 β \beta β就變成了
{ min ? β ≥ 0 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( j ) T x ( i ) ? ∑ i = 1 m β i s . t : ∑ i = 1 m β i y ( i ) = 0 \left\{\begin{matrix}\min_{\beta \ge 0}\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m} \beta _{i}\beta _{j} y^{(i)}y^{(j)}x^{(j)^{T}} x^{(i)}-\sum_{i=1}^{m} \beta _{i} \\s.t:\sum_{i=1}^{m} \beta _{i} y^{(i)}=0 \end{matrix}\right. {minβ0?21?i=1m?j=1m?βi?βj?y(i)y(j)x(j)Tx(i)?i=1m?βi?s.t:i=1m?βi?y(i)=0?

但是對于 β \beta β,可以使用SMO算法求得;對于SMO算法,我們先放一放

這里,假設我們用SMO求得了 β \beta β的最優解,那么我們可以分別計算得到對應的:

w = ∑ i = 1 m β i x ( i ) y ( i ) w=\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} w=i=1m?βi?x(i)y(i)
b:一般使用所有支持向量的計算均值作為實際值

怎么得到支持向量呢?
β = 0 \beta=0 β=0,該樣本不是支持向量
β > 1 \beta>1 β>1,該樣本是支持向量

小節

對于線性可分的m個樣本(x1,y1),(x2,y2)… :

	x為n維的特征向量y為二元輸出,即+1,-1

SVM輸出的為w,b,分類決策函數

通過構造約束問題:
{ min ? β ≥ 0 1 2 ∑ i = 1 m ∑ j = 1 m β i β j y ( i ) y ( j ) x ( j ) T x ( i ) ? ∑ i = 1 m β i s . t : ∑ i = 1 m β i y ( i ) = 0 \left\{\begin{matrix}\min_{\beta \ge 0}\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m} \beta _{i}\beta _{j} y^{(i)}y^{(j)}x^{(j)^{T}} x^{(i)}-\sum_{i=1}^{m} \beta _{i} \\s.t:\sum_{i=1}^{m} \beta _{i} y^{(i)}=0 \end{matrix}\right. {minβ0?21?i=1m?j=1m?βi?βj?y(i)y(j)x(j)Tx(i)?i=1m?βi?s.t:i=1m?βi?y(i)=0?
使用SMO算法求出上述最優解 β \beta β
找到所有支持向量集合:
S = ( x ( i ) , y ( i ) ) ( β > 0 , i = 1 , 2 , . . . , m ) S = (x^{(i)}, y^{(i)}) (\beta > 0,i=1,2,...,m) S=(x(i),y(i))(β>0,i=1,2,...,m)
從而更新w,b

w = ∑ i = 1 m β i x ( i ) y ( i ) w=\sum_{i=1}^{m} \beta _{i} x^{(i)}y^{(i)} w=i=1m?βi?x(i)y(i)

b = 1 S ∑ i = 1 S ( y s ? ∑ i = 1 m β i x ( i ) T y ( i ) x s ) b=\frac{1}{S} \sum_{i=1}^{S}(y^{s}- \sum_{i=1}^{m} \beta _{i} x^{(i)^{T}}y^{(i)}x^{s} ) b=S1?i=1S?(ys?i=1m?βi?x(i)Ty(i)xs)

構造最終的分類器,為:
f ( x ) = s i g n ( w ? x + b ) f(x)=sign(w\ast x+b) f(x)=sign(w?x+b)

	x<0時,y=-1x=0時,y=0x>0時,y=1注意:假設,不會出現0若出現,正負樣本隨意輸出一個,即+0.00000001或-0.00000001都可以

概念

最后,我們定義具體概念:

分割超平面(Separating Hyperplane):將數據集分割開來的直線、平面叫分割超平面

支持向量(Support Vector):離分割超平面最近的那些點叫做支持向量

間隔(Margin):支持向量數據點到分割超平面的距離稱為間隔;任何一個支持向量到分割超平面的距離都是相等的


感謝閱讀🌼
如果喜歡這篇文章,記得點贊👍和轉發🔄哦!
有任何想法或問題,歡迎留言交流💬,我們下次見!
本文相關代碼存放位置
????

祝愉快🌟!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717405.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717405.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717405.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

安裝Docker及DockerCompose

0.安裝Docker Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 Docker CE 分為 stable test 和 nightly 三個更新頻道…

10.輪廓系數-機器學習模型性能的常用的評估指標

輪廓系數&#xff08;Silhouette Coefficient&#xff09;是評估聚類算法效果的常用指標之一。它結合了聚類的凝聚度&#xff08;Cohesion&#xff09;和分離度&#xff08;Separation&#xff09;&#xff0c;能夠量化聚類結果的緊密度和分離度。 背景 1.聚類分析的背景 在…

NDK介紹

NDK&#xff08;Native Development Kit&#xff09;是一個用于在Android平臺上開發C和C代碼的工具集。它允許開發人員使用C和C編寫部分代碼&#xff0c;并將其編譯為本機代碼庫&#xff08;.so文件&#xff09;&#xff0c;然后通過JNI在Java應用程序中調用這些本地代碼。 ND…

CUDA學習筆記01:vs2019環境配置

為了在window11 vs2019下使用CUDA編程&#xff0c;配置了一下環境&#xff0c;但是我電腦一開始自帶CUDA&#xff0c;然后再安裝的vs2019&#xff0c;這樣安裝順序上是不對的&#xff0c;vs2019找不到CUDA配置項&#xff0c;網上找了很多辦法貌似都不好使而且很復雜。 那么最快…

c++之拷貝構造和賦值

如果一個構造函數中的第一個參數是類本身的引用&#xff0c;或者是其他的參數都有默認值&#xff0c;則該構造函數為拷貝構造函數。 那么什么是拷貝構造呢&#xff1f;利用同類對象構造一個新對象。 1&#xff0c;函數名和類必須同名。 2&#xff0c;沒有返回值。 3&#x…

Linux多線程控制:深入理解與應用(萬字詳解!)

&#x1f3ac;慕斯主頁&#xff1a;修仙—別有洞天 ??今日夜電波&#xff1a;どうして (feat. 野田愛実) 0:44━━━━━━?&#x1f49f;──────── 3:01 &#x1f504; ?? ? ?? …

6.2 指標的應用與設計(12%)

1、指標的作用 用簡約的匯總數據量化業務強弱。 2、指標的理解 特點&#xff1a; &#xff08;1&#xff09;指標是游離態的&#xff0c;無法單獨實現數據統計 eg&#xff1a;總銷售額、總銷售量 &#xff08;2&#xff09;需與統計維度結合&#xff0c;明確統計指標的對…

帕累托優化基本概念,如何系統學習?

帕累托優化&#xff0c;也稱為帕累托改善或帕累托改進&#xff0c;是以意大利經濟學家帕累托&#xff08;Vilfredo Pareto&#xff09;命名的。它的基本概念是在沒有使任何人境況變壞的前提下&#xff0c;使得至少一個人變得更好。帕累托最優是指沒有進行帕累托改進余地的狀態&…

047 內部類

成員內部類用法 /*** 成員內部類** author Admin*/ public class OuterClass {public void say(){System.out.println("這是類的方法");}class InnerClass{public void say(){System.out.println("這是成員內部類的方法");}}public static void main(Stri…

(二)邏輯回歸與交叉熵--九五小龐

什么是邏輯回歸 線性回歸預測的是一個連續值&#xff0c;邏輯回歸給出的“是”和“否”的回答 Singmoid sigmoid函數是一個概率分布函數&#xff0c;給定某個輸入&#xff0c;它將輸出為一個概率值 邏輯回歸損失函數 平方差所懲罰的是與損失為同一數量級的情形&#xff0…

Springboot企業級開發--1.開發入門

目錄 目錄 一.Spring Boot的主要特點和優勢包括&#xff1a; 二.Spring Boot的核心功能可以歸納為以下幾點&#xff1a; 三.Springboot是如何解決問題&#xff1f; Spring Boot 是一個開源的Java框架&#xff0c;其設計目標是為了簡化新Spring應用的初始搭建以及開發過程。…

SandBox中的JavaAgent技術

8.1 JavaAgent Java Agent 是一種強大的技術&#xff0c;在運行時動態修改已加載類的字節碼&#xff0c;為應用程序注入額外的功能和行為。 JDK 1.5 支持靜態 Instrumentation&#xff0c;基本的思路是在 JVM 啟動的時候添加一個代理&#xff08;javaagent&#xff09;&#…

基于阿里云OSS上傳圖片實戰案例

一、案例描述 基于Springboot框架實現一個上傳圖片到阿里云服務端保存的小案例。 二、準備工作 基于Springboot免費搭載輕量級阿里云OSS數據存儲庫&#xff08;將本地文本、照片、視頻、音頻等上傳云服務保存&#xff09;-CSDN博客 三、代碼 新建這兩個類&#xff1a;一個…

Golang函數make介紹和用法

1.介紹 golang分配內存主要有內置函數new和make 相同點: 他們的第一個參數都是一個類型而不是一個值 不同點: new可分配任意類型的數據make只能為slice, map, channel分配內存new返回的是指針make返回類型的是引用而不是指針,并且返回的值也依賴于具體傳入的類型, 這種不同點的…

C++原子操作

8.3.5 原子操作 在同一時刻只有唯一的線程對這個資源進行訪問。這有點類似互斥對象對共享資源的訪問的保護&#xff0c;但是原子操作更加接近底層&#xff0c;因而效率更高。 &#xff08;1&#xff09;pthread #include <stdatomic.h> atomic_int atomicVariable; at…

Python如何從SQL Server存取數據?

在Python中&#xff0c;你可以使用各種庫來連接和操作 SQL Server 數據庫。一種常用的庫是pyodbc&#xff0c;它是一個用于連接到各種數據庫的開源 Python 庫&#xff0c;包括 SQL Server。以下是連接到 SQL Server 并存取數據的基本步驟&#xff1a; 1、安裝 pyodbc 庫&#…

LANA: A Language-Capable Navigator for Instruction Following and Generation

摘要 最近&#xff0c;視覺語言導航&#xff08;VLN&#xff09;——要求機器人代理遵循導航指令——已經取得了巨大的進步。然而&#xff0c;現有文獻最強調將指令解釋為行動&#xff0c;只提供“愚蠢”的尋路代理。在本文中&#xff0c;我們設計了 LANA&#xff0c;一種支持…

【C++ 異常處理】

C 異常處理 ■ C 異常處理簡介■ throw (拋出異常)■ catch (捕獲異常)■ try&#xff08;&#xff09;■ C 標準的異常 ■ C 異常處理簡介 C 異常處理涉及到三個關鍵字&#xff1a;try、catch、throw。 屬性描述throw當問題出現時&#xff0c;程序會拋出一個異常。這是通過使…

【LeetCode-1143】最長公共子序列(動歸)

目錄 題目描述 解法1&#xff1a;動態規劃 代碼實現 題目鏈接 題目描述 給定兩個字符串 text1 和 text2&#xff0c;返回這兩個字符串的最長公共子序列的長度。 一個字符串的 子序列 是指這樣一個新的字符串&#xff1a;它是由原字符串在不改變字符的相對順序的情況下刪除…

Linux系統這些壓測工具,你用過嗎?

作為一名運維人員,你是否遇到過這種場景?需要用工具測試系統cpu或內存占用高來觸發告警,或者通過壓測測試服務的并發能力。作為運維工程師,也可以通過這些命令復現故障場景。那么通過本文可以讓你掌握常用的測試命令和工具。 更多技術博客,請關注微信公眾號:運維之美 一、…