【AI】机器学习——支持向量机(非线性及分析)

news2025/1/11 14:24:49

5. 支持向量机(线性SVM)

文章目录

5.4 非线性可分SVM

5.4.1 非线性可分问题

原始空间不存在能够正确划分的超平面

在这里插入图片描述

在二维平面直角坐标系中,如果按照与原点之间的距离对数据点进行分类的话,分类模型就成为一个圆,也就是超平面

处理思路

在这里插入图片描述

如果能将样本从原始空间映射到高维特征空间上,在新的特征空间是上样本就可能是线性可分的

  • 若样本的属性数优先,则一定存在一个高维特征空间使样本可分

核技巧

通过一个非线性映射,将原始低维空间上的非线性问题转化为新的高维空间上的线性问题,这就是核技巧的基本思想。

使在原始空间 R n R^n Rn 中的超平面模型映射为特征空间的超平面模型

在学习和预测中,只定义核函数,而不显式定义映射函数,利用线性分类方法与核函数解决非线性问题

核函数

假设原始空间是 低维欧几里得空间 X \mathcal{X} X ,新空间为 **高维希尔伯特空间 H \mathcal{H} H ** ,从 X \mathcal{X} X H \mathcal{H} H 的映射可以用函数 ϕ ( x ) : X → H \phi(x):\mathcal{X}\rightarrow \mathcal{H} ϕ(x):XH 表示。核函数可以表示为映射函数内积形式
K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z ) K(x,z)=\phi(x)\cdot\phi(z) K(x,z)=ϕ(x)ϕ(z)

eg

原空间 X \mathcal{X} X 中的两个点进行内积运算 ( x i , x j ) (x_i,x_j) (xi,xj) ,若先进行映射再在 H \mathcal{H} H 中内积运算,则有
z i = ϕ ( x i ) , z j = ϕ ( x j ) , 则 ( z i , z j ) = ϕ ( x i ) ⋅ ϕ ( x j ) z_i=\phi(x_i),z_j=\phi(x_j),则(z_i,z_j)=\phi(x_i)\cdot \phi(x_j) zi=ϕ(xi),zj=ϕ(xj),(zi,zj)=ϕ(xi)ϕ(xj)
若使用核函数,则可直接计算 K ( x i , x j ) K(x_i,x_j) K(xi,xj)

特点

对于确定的核函数

  1. 计算过程在低维空间上完成,避免了高维空间中的复杂计算

  2. 对于给定核函数,高维空间 H \mathcal{H} H 和映射函数 ϕ \phi ϕ 的取法不唯一

    可映射到不同的特征空间, z i z_i zi 维度可以不同和

    可通过不同映射函数,映射到同一特征空间

核函数作用于SVM

输入:线性不可分的数据
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } ∈ X ∈ R n , y i ∈ Y ∈ { + 1 , − 1 } , i = 1 , ⋯   , N D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\in \mathcal{X}\in R^n,y_i\in \mathcal{Y}\in \{+1,-1\},i=1,\cdots,N D={(x1,y1),(x2,y2),,(xN,yN)}XRn,yiY{+1,1},i=1,,N
输出:分离超平面和决策函数

算法:

1. 选择合适的参数 C C C 和核函数 K ( x , z ) K(x,z) K(x,z) ,构造最优化问题

线性SVM
{ min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j x i ⋅ x j − ∑ i = 1 N α i s . t . 0 ≤ α i ≤ 0 ∑ i = 1 N α i y i = 0 \begin{cases} \min\limits_{\alpha}\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_jx_i\cdot x_j-\sum\limits_{i=1}^N\alpha_i\\ s.t. \quad 0\le \alpha_i\le 0\\ \qquad \sum\limits_{i=1}^N\alpha_iy_i=0\\ \end{cases} αmin21i=1Nj=1Nαiαjyiyjxixji=1Nαis.t.0αi0i=1Nαiyi=0
对于 ( x i , x j ) (x_i,x_j) (xi,xj) ,可以通过核技巧映射到线性可分空间
ϕ ( x i ) ⋅ ϕ ( x j ) = z i ⋅ z j = K ( x i , x j ) \phi(x_i)\cdot \phi(x_j)=z_i\cdot z_j=K(x_i,x_j) ϕ(xi)ϕ(xj)=zizj=K(xi,xj)
H \mathcal{H} H 空间中的SVM问题为
{ min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . 0 ≤ α i ≤ 0 ∑ i = 1 N α i y i = 0 \begin{cases} \min\limits_{\alpha}\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum\limits_{i=1}^N\alpha_i\\ s.t. \quad 0\le \alpha_i\le 0\\ \qquad \sum\limits_{i=1}^N\alpha_iy_i=0\\ \end{cases} αmin21i=1Nj=1NαiαjyiyjK(xi,xj)i=1Nαis.t.0αi0i=1Nαiyi=0
求得最优解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) \alpha^*=(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*) α=(α1,α2,,αN)

2. 选一个 0 < α j ∗ < C 0<\alpha_j^*<C 0<αj<C 的分量对应的样本点 ( x j , y j ) (x_j,y_j) (xj,yj) ——支持向量,计算模型参数 ω ∗ , b ∗ \omega^*,b^* ω,b

ω ∗ = ∑ i = 1 N α i ∗ y i K ( ⋅ , x i ) \omega^*=\sum\limits_{i=1}^N\alpha_i^*y_i K(\cdot,x_i) ω=i=1NαiyiK(,xi) b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) b^*=y_j-\sum\limits_{i=1}^N\alpha_i^*y_iK(x_i,x_j) b=yji=1NαiyiK(xi,xj)

模型
{ ∑ i = 1 N α i ∗ y i K ( x i , x ) + ( y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) ) = 0 决策函数 f ( x ) = s i g n [ ∑ i = 1 N α i ∗ y i K ( x i , x ) + ( y j − ∑ i = 1 N α i ∗ y i K ( x i , x j ) ) ] \begin{cases} \sum\limits_{i=1}^N\alpha_i^*y_i K(x_i,x)+\left(y_j-\sum\limits_{i=1}^N\alpha_i^*y_iK(x_i,x_j)\right)=0\\ 决策函数f(x)=sign\left[\sum\limits_{i=1}^N\alpha_i^*y_iK(x_i,x)+\left(y_j-\sum\limits_{i=1}^N\alpha_i^*y_iK(x_i,x_j)\right)\right] \end{cases} i=1NαiyiK(xi,x)+(yji=1NαiyiK(xi,xj))=0决策函数f(x)=sign[i=1NαiyiK(xi,x)+(yji=1NαiyiK(xi,xj))]
所以问题的关键为 如何确定核函数 K ( x i , x j ) K(x_i,x_j) K(xi,xj)

5.4.2 正定核函数

对于内积运算,
( x , x ) > 0 ,当 x > 0 时 ——正定性 ( x i , x j ) = ( x j , x i ) ——非负性 } ⇒ 正定核 \left. \begin{aligned} (x,x)>0,当x>0时&——正定性\\ (x_i,x_j)=(x_j,x_i)&——非负性 \end{aligned} \right\}\Rightarrow 正定核 (x,x)>0,当x>0(xi,xj)=(xj,xi)——正定性——非负性}正定核
故正定核函数应满足:

  1. 对称性: K ( x , z ) = K ( z , x ) K(x,z)=K(z,x) K(x,z)=K(z,x)

  2. 正定性: ∀ x 1 , x 2 ⋯   , x N ∈ R n \forall x_1,x_2\cdots,x_N\in R^n x1,x2,xNRn K ( x i , x j ) K(x_i,x_j) K(xi,xj) 的Gram阵是半正定的

    • Gram阵
      原 [ ( x 1 , x 1 ) ⋯ ( x 1 , x N ) ⋮ ⋱ ⋮ ( x N , x 1 ) ⋯ ( x N , x N ) ] 新 [ K ( x 1 , x 1 ) ⋯ K ( x 1 , x N ) ⋮ ⋱ ⋮ K ( x N , x 1 ) ⋯ K ( x N , x N ) ] 原\left[ \begin{matrix} (x_1,x_1)&\cdots&(x_1,x_N)\\ \vdots&\ddots&\vdots\\ (x_N,x_1)&\cdots&(x_N,x_N) \end{matrix} \right]\qquad 新\left[ \begin{matrix} K(x_1,x_1)&\cdots&K(x_1,x_N)\\ \vdots&\ddots&\vdots\\ K(x_N,x_1)&\cdots&K(x_N,x_N) \end{matrix} \right] (x1,x1)(xN,x1)(x1,xN)(xN,xN) K(x1,x1)K(xN,x1)K(x1,xN)K(xN,xN)

    • 半正定

      对于A, ∀ x ≠ 0 \forall x\neq 0 x=0 ,有 x T A x ≥ 0 x^TAx\ge 0 xTAx0 ,则有A为半正定阵

      半正定判定 { x T A x = y T D y —— D 为对角阵 全部特根 λ ≥ 0 所有主子行列式 ≥ 0 \begin{cases} x^TAx=y^TDy——D为对角阵\\ 全部特根\lambda\ge 0\\ 所有主子行列式\ge 0 \end{cases} xTAx=yTDy——D为对角阵全部特根λ0所有主子行列式0

K ( x , z ) K(x,z) K(x,z) 构造 H \mathcal{H} H 空间

任何一个核函数都隐式定义了一个成为 再生核希尔伯特空间 的特征空间
欧式空间 { 空间 ( 集合 ) → 元素是向量 向量空间 ⊆ 线性空间 ( 元素 + 数乘 ∈ 空间 ) → 内积 内积空间 { 表示向量间关系 用夹角表示,用 ( a , b ) 度量夹角大小 → 范数 赋范线性空间——表示向量大小、长度 数列存在极限且 ∈ 空间,任一柯西列都是收敛列 { x 1 ⋯   , x N } { x 1 > x 2 > ⋯ > x N 且 x 1 − x 2 > x 2 − x 3 > ⋯ > x N − 1 − x N ( 柯西列 ) → 0   ↓ 巴拿赫空间 \begin{aligned} &欧式空间&\begin{cases} 空间(集合)\xrightarrow{元素是向量}向量空间\subseteq 线性空间(元素+数乘\in 空间)\\ \xrightarrow{内积}内积空间\begin{cases} 表示向量间关系\\ 用夹角表示,用(a,b)度量夹角大小 \end{cases}\\ \xrightarrow{范数}赋范线性空间——表示向量大小、长度 \end{cases}\\ &&数列存在极限且\in 空间,任一柯西列都是收敛列\{x_1\cdots,x_N\}\\ &&\begin{cases} x_1>x_2>\cdots>x_N\\ 且x_1-x_2>x_2-x_3>\cdots>x_{N-1}-x_N(柯西列)\rightarrow 0\ \end{cases}\\ &\downarrow\\ &巴拿赫空间 \end{aligned} 欧式空间巴拿赫空间 空间(集合)元素是向量 向量空间线性空间(元素+数乘空间)内积 内积空间{表示向量间关系用夹角表示,用(a,b)度量夹角大小范数 赋范线性空间——表示向量大小、长度数列存在极限且空间,任一柯西列都是收敛列{x1,xN}{x1>x2>>xNx1x2>x2x3>>xN1xN(柯西列)0 
对于非欧氏空间上的完备空间,称为希尔伯特空间 H \mathcal{H} H

步骤

1. 定义映射

ϕ : x → K ( ⋅ , x ) \phi:x\rightarrow K(\cdot,x) ϕ:xK(,x)

  • ⋅ \cdot 表示任一位置元素
  • ϕ ( ⋅ ) ⋅ ϕ ( x ) = K ( ⋅ , x ) \phi(\cdot)\cdot \phi(x)=K(\cdot,x) ϕ()ϕ(x)=K(,x) 表示 ϕ ( x ) \phi(x) ϕ(x) 与任一个元素的内积为 K ( ⋅ , x ) K(\cdot,x) K(,x)

表示这个映射受核函数约束

线性组合: f ( ⋅ ) = ∑ i = 1 m α i K ( ⋅ , x i ) f(\cdot)=\sum\limits_{i=1}^m\alpha_iK(\cdot,x_i) f()=i=1mαiK(,xi) ——向量
S = { f ( ⋅ ) } ——向量空间 S=\{f(\cdot)\}——向量空间 S={f()}——向量空间
2. S → + 内积 内积空间 S\xrightarrow{+内积}内积空间 S+内积 内积空间
f ( ⋅ ) = ∑ i = 1 m α i K ( ⋅ , x i ) g ( ⋅ ) = ∑ j = 1 l β j ( ⋅ , z j ) } ⇒ f ⋅ g = ∑ i = 1 m ∑ j = 1 l α i β j K ( x i , z j ) \left.\begin{aligned} f(\cdot)=\sum\limits_{i=1}^m\alpha_iK(\cdot,x_i)\\ g(\cdot)=\sum\limits_{j=1}^l\beta_j(\cdot,z_j)\\ \end{aligned} \right\}\Rightarrow f\cdot g=\sum\limits_{i=1}^m\sum\limits_{j=1}^l\alpha_i\beta_jK(x_i,z_j) f()=i=1mαiK(,xi)g()=j=1lβj(,zj) fg=i=1mj=1lαiβjK(xi,zj)
证明:
f ⋅ f ≥ 0 f ⋅ f = ∑ i = 1 m ∑ j = 1 m α i α j K ( x i , x j ) ≥ 0 令 x = ( α 1 , ⋯   , α m ) T , G = [ K ( x 1 , x 1 ) ⋯ K ( x 1 , x m ) ⋮ ⋱ ⋮ K ( x m , x 1 ) ⋯ K ( x m , x m ) ] x T G x = ( α 1 , ⋯   , α m ) G ( α 1 , ⋯   , α m ) T = [ α 1 K ( x 1 , x 1 ) + α 2 K ( x 2 , x 1 ) + ⋯ + α m K ( x m , x 1 ) ⋮ α 1 K ( x 1 , x m ) + α 2 K ( x 2 , x m ) + ⋯ + α m K ( x m , x m ) ] ( α 1 , ⋯   , α m ) T = ∑ i = 1 m ∑ j = 1 m α i α j K ( x i , x j ) ≥ 0 \begin{aligned} &f\cdot f\ge 0\\ &f\cdot f=\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jK(x_i,x_j)\ge 0\\ &令x=(\alpha_1,\cdots,\alpha_m)^T,G=\left[ \begin{matrix} K(x_1,x_1)&\cdots&K(x_1,x_m)\\ \vdots&\ddots&\vdots\\ K(x_m,x_1)&\cdots&K(x_m,x_m) \end{matrix} \right]\\ &\begin{aligned} x^TGx&=(\alpha_1,\cdots,\alpha_m)G(\alpha_1,\cdots,\alpha_m)^T\\ &=\left[ \begin{matrix} \alpha_1K(x_1,x_1)+\alpha_2K(x_2,x_1)+\cdots+\alpha_mK(x_m,x_1)\\ \vdots\\ \alpha_1K(x_1,x_m)+\alpha_2K(x_2,x_m)+\cdots+\alpha_mK(x_m,x_m)\\ \end{matrix} \right](\alpha_1,\cdots,\alpha_m)^T\\ &=\sum\limits_{i=1}^m\sum\limits_{j=1}^m\alpha_i\alpha_jK(x_i,x_j)\ge 0 \end{aligned} \end{aligned} ff0ff=i=1mj=1mαiαjK(xi,xj)0x=(α1,,αm)T,G= K(x1,x1)K(xm,x1)K(x1,xm)K(xm,xm) xTGx=(α1,,αm)G(α1,,αm)T= α1K(x1,x1)+α2K(x2,x1)++αmK(xm,x1)α1K(x1,xm)+α2K(x2,xm)++αmK(xm,xm) (α1,,αm)T=i=1mj=1mαiαjK(xi,xj)0
3. S → + 范数 赋范空间 → 完备化 H S\xrightarrow{+范数}赋范空间\xrightarrow{完备化}\mathcal{H} S+范数 赋范空间完备化 H

再生性
K ( ⋅ , x ) ⋅ K ( ⋅ , z ) = K ( x , z ) f ( ⋅ ) = ∑ i α i K ( ⋅ , x i ) K ( ⋅ , x ) f ( ⋅ ) = ∑ i α i K ( x , x i ) = f ( x ) K(\cdot,x)\cdot K(\cdot,z)=K(x,z)\\ f(\cdot)=\sum\limits_{i}\alpha_iK(\cdot,x_i)\\ K(\cdot,x)f(\cdot)=\sum\limits_{i}\alpha_i K(x,x_i)=f(x) K(,x)K(,z)=K(x,z)f()=iαiK(,xi)K(,x)f()=iαiK(x,xi)=f(x)

常用核函数

在支持向量机中,核函数的选择是一个核心问题,常用核函数有:

线性核 K ( X , Y ) = X T Y K(X,Y)=X^TY K(X,Y)=XTY

多项式核 K ( X , Y ) = ( X T Y + c ) d K(X,Y)=(X^TY+c)^d K(X,Y)=(XTY+c)d c c c 为常数, d ≥ 1 d\ge 1 d1 为多项式次数

高斯核 K ( X , Y ) = e − ∥ X − Y ∥ 2 2 σ 2 K(X,Y)=e^{-\frac{\Vert X-Y\Vert^2}{2\sigma^2}} K(X,Y)=e2σ2XY2 σ > 0 \sigma>0 σ>0 为高斯核带宽

拉普拉斯核 K ( X , Y ) = e − ∥ X − Y ∥ σ K(X,Y)=e^{-\frac{\Vert X-Y\Vert}{\sigma}} K(X,Y)=eσXY

sigmod核 K ( X , Y ) = t a n h ( β X T Y + θ ) K(X,Y)=tanh(\beta X^TY+\theta) K(X,Y)=tanh(βXTY+θ) β > 0 \beta >0 β>0 θ < 0 \theta <0 θ<0

5.5 SVM参数求解算法

将支持向量机的最优化作为原始问题,应用最优化理论中的拉格朗日对偶性,可以通过求解其对偶问题得到原始问题的最优解

SVM关键是如何根据支持向量构建解,算法的复杂度也主要取决于支持向量的数目

在算法实现过程中,支持向量机会遇到大量训练样本下,全局最优解难以求得的情况——SMO算法(序列最小最优化)

支持向量机的学习问题可以形式化为凸二次规划问题的求解,SMO算法的特点是不断将原始的二次规划问题分解为只有两个变量的二次规划子问题,并求解子问题的解析解,直到所有变量满足条件为止

5.6 SVM与线性模型关系

逻辑斯蒂模型损失函数
J ( ω ) = − 1 n [ ∑ i = 1 n ∑ k = 1 2 I ( y i = k ) ln ⁡ P ( y i = k ∣ x i , ω ) ] = − 1 n [ ∑ i = 1 n y i ln ⁡ P ( y i = 1 ∣ x i , ω ) + ( 1 − y i ) ln ⁡ P ( y i = 0 ∣ x i , ω ) ] \begin{aligned} J(\omega)&=-\frac{1}{n}\left[\sum\limits_{i=1}^n\sum\limits_{k=1}^2I(y_i=k)\ln P(y_i=k\vert x_i,\omega)\right]\\ &=-\frac{1}{n}\left[\sum\limits_{i=1}^ny_i\ln P(y_i=1\vert x_i,\omega)+(1-y_i)\ln P(y_i=0\vert x_i,\omega)\right] \end{aligned} J(ω)=n1[i=1nk=12I(yi=k)lnP(yi=kxi,ω)]=n1[i=1nyilnP(yi=1∣xi,ω)+(1yi)lnP(yi=0∣xi,ω)]
正则化
J ( ω ) + λ 2 n ∥ ω ∥ 2 2 J(\omega)+\frac{\lambda}{2n}\Vert \omega\Vert_2^2 J(ω)+2nλω22
即逻辑斯蒂模型先有损失函数,再做正则化


SVM:将损失函数作为约束,先求出参数,再以损失函数为约束

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

奇偶数之和

任务描述 本关任务&#xff1a;请编一个函数fun(int *a,int n,int *odd,int *even)&#xff0c;函数的功能是分别求出数组a中所有奇数之和以及所有偶数之和。形参n给出数组中数据的个数&#xff1b;利用指针odd返回奇数之和&#xff0c;利用指针even返回偶数之和。 例如&#…

UE5_OpenCV库的加载方式

UE5使用opencv库要在系统中添加opencv的环境变量 在项目文件夹下新建ThirdParty,将OpenCV中的bin、opencv文件夹copy到ThirdParty中 打开项目,找到source目录下的build.cs文件 修改build.cs内容,添加头文件路径,dll路径,lib路径 // Copyright Epic Games, Inc. All Right…

leetcode21

题目&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输…

腾讯mini项目-【指标监控服务重构】2023-07-21

今日已办 当在Docker容器中运行程序时&#xff0c;可能会遇到使用os.Getpid()函数时出现异常的情况。这是因为Docker容器中的进程隔离机制与宿主机器不同&#xff0c;容器内部的进程可能无法访问宿主机器的进程信息。 要解决这个问题&#xff0c;可以尝试&#xff1a; 使用do…

Linux磁盘管理:最佳实践

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

每日一博 - 防范彩虹表攻击_数据库存储密码的秘密武器

文章目录 概述图解小结 概述 加盐&#xff08;salting&#xff09;是一种安全存储数据库中密码并验证其真实性的常见方法&#xff0c;它的主要目的是增加密码的安全性&#xff0c;以防止常见的密码攻击&#xff0c;如彩虹表攻击。以下是关于如何使用加盐技术的简要介绍&#x…

计算机二级python基础题刷题笔记(三)

hello&#xff0c;看到三的小伙伴们你们已经超过30%的对手啦&#xff01;接下来也要加油呀 代码没有最好&#xff0c;只有更好&#xff0c;如果你有更好的想法答案欢迎在评论区里发表呀 1、将程序里定义好的std列表里的姓名和成绩与已经定义好的模板拼成一段话&#xff0c;显示…

我的微信公众号开通啦,来关注我吧

我的微信公众号开通啦&#xff0c;承蒙各位粉丝的厚爱&#xff0c;请大家动动手指扫码关注吧 公众号主要以Android开发技术文章为主&#xff0c;活跃度高&#xff0c;紧跟技术前沿&#xff0c;内容深度而全面&#xff0c;重要的是 私信必回&#xff01;私信必回&#xff01;私…

利用github托管个人网站

如何制作个人学术主页&#xff1f; - 知乎去年年底刚刚基于开源项目al-folio重新做了自己的个人主页。注意&#xff0c;这个开源项目很好&#xff0c;但是有个尴尬的问题…https://www.zhihu.com/question/281476526/answer/2360738062 your site可能会出现的慢一点&#xff0…

qsort函数详细讲解以及利用冒泡排序模拟实现qsort函数

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.qsort函数 1.1qsort函数的参数 …

Java笔记:Arthas-Java线上异常排查

一、安装 arthas在github上有个page&#xff0c;地址是https://alibaba.github.io/arthas/。 安装的方式有好几种&#xff1a; 1.直接下载一个可以启动的jar包然后用java -jar的方式启动 2.用官方提供的as.sh脚本一键安装 3.用rpm的方式安装 本篇介绍第一种方式&#xff0c;因…

无涯教程-JavaScript - EXP函数

描述 EXP函数返回e升至数字的幂。常数e等于自然对数的底数2.71828182845904。 语法 EXP (number)争论 Argument描述Required/OptionalNumberThe exponent applied to the base e.Required Notes 要计算其他碱基的幂,请使用幂运算符(^) EXP是LN的倒数,LN是数字的自然对数…

基于SSM的汽车租赁后台管理系统

基于SSM的汽车租赁后台管理系统 介绍 包括登录、首页、客户管理、车辆管理、汽车出租、出租单管理、汽车入库、检查单管理、系统管理等功能&#xff0c;适合二次开发课程设计、毕业设计等 软件架构 SSM 运行环境 数据库 mysql 安装教程输入链接说明 端口&#xff1a;3306…

第16篇ESP32 platformio_arduino框架 wifi联网_连接WiFi热点并连接tcp server收发数据进行通讯

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

BeanFactory版本的快速入门

目录 IOC原理 IOC工作步骤 开发步骤 实现代码 DI原理 DI工作步骤 IOC原理 在Spring框架中&#xff0c;IOC是通过Bean容器&#xff08;例如ApplicationContext&#xff09;来实现的。Bean容器负责管理Bean的创建、依赖关系的注入和对象的生命周期的控制。通过配置文件&am…

【软件设计师-从小白到大牛】上午题基础篇:第一章 计算机组成与体系结构

文章目录 前言章节提要一、数据的表示&#xff08;进制的转换&#xff09;1、R进制转十进制使用按权展开法2、十进制转R进制使用短除法(余数从下往上排列&#xff09;3、二进制转八进制与十六进制 二、数据的表示&#xff08;原码反码补码移码&#xff09;真题链接 三、数据的表…

国内券商有没有量化交易接口,哪家做的比较好

个人账户实现股票量化程序化自动交易&#xff0c;券商有接口&#xff0c;门槛已降低_股票程序交易接口的博客-CSDN博客 凡是开了量化交易接口的券商做的都不错&#xff0c;关键看适不适合你自己 我在用的是python语言&#xff0c;有本地客户端&#xff0c;随时修改随时调整策略…

基于Java的考编论坛网站的设计与实现(亮点:在线发布帖子、内容评论回复、购买二手物品、在线支付)

考编论坛网站 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 前端界面…

直方图均衡化,画出均衡化后的直方图(数字图像处理大题复习 P2)

文章目录 1. 频率2. 累计直方图3. 取整4. 得到对应关系5. 累加对应关系&#xff0c;得出结果6. 画出均衡化后的直方图 1. 频率 一般题目会给出各个灰度级的概率分布&#xff0c;如果没有给概率&#xff0c;而是给了频率&#xff0c;比如&#xff1a; 在 8x8 的图像中&#xf…

有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序

输入描述:第一行输入一个整数(0<N<50)。第二行输入N个升序排列的整数&#xff0c;输入用空格分隔的N个整数。第三行输入想要进行插入的一个整数 输出描述:输出为一行&#xff0c;N 1个有序排列的整数 输入:5 1 6 9 22 30 8 输出:1 6 8 9 22 30 思路&am…