硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细介绍及其原理详解

news2024/11/24 3:53:31

相关文章

  1. K近邻算法和KD树详细介绍及其原理详解
  2. 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解
  3. 决策树算法和CART决策树算法详细介绍及其原理详解
  4. 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详解
  5. 硬间隔支持向量机算法、软间隔支持向量机算法、非线性支持向量机算法详细介绍及其原理详解

文章目录

  • 相关文章
  • 前言
  • 一、硬间隔支持向量机算法
  • 二、软间隔支持向量机算法
  • 三、非线性支持向量机算法
  • 总结


前言

  今天给大家带来的主要内容包括:硬间隔支持向量机算法,软间隔支持向量机算法,非线性支持向量机算法。废话不多说,下面就是本文的全部内容了!


一、硬间隔支持向量机算法

  如果现在有一些数据分布在一条数轴上,我们可以尝试找到一个点来把两类样本分开:

请添加图片描述

图1:使用一个点将数轴上的待分类样本分类

  如果这些数据分布在一个平面上,我们可以尝试找到一条直线来把两类样本分开:

请添加图片描述

图2:使用一条直线将二维平面上的待分类样本分类

  如果这些数据分布在三维空间中,我们也可以找到一个平面来把两类样本分开:

请添加图片描述

图3:使用一个平面将三维空间上的待分类样本分类

  根据以上的分析,我们可以得到结论:当待分类样本所处的维度等于 n n n的时候,我们可以找到一个 n − 1 n-1 n1维的超平面对待分类样本进行分类。

  现在我们只考虑二维的情况,如果我们想把两类样本分开,可以画出两条直线(超平面),都可以对样本进行有效的分类:

请添加图片描述

图4:两条直线都可以对二维平面上的待分类样本分类

  既然两条直线都可以对样本进行分类,那么究竟哪条直线是最好的呢?

请添加图片描述

图5:哪条直线对于二维平面分类问题效果更好?

  今天我们聊的支持向量机,就可以解决以上问题,帮助我们找到最好的分类超平面。更具体地说,对于以上例子,支持向量机就是要找到这样一条直线,让直线两边的点与此条直线的距离是最大的:

请添加图片描述

图6:找到一条距离直线两边的点距离最大的直线

  对于以上示例,我们假设平面上任意一点 x x x的横坐标是 x 1 x^{1} x1,纵坐标是 x 2 x^{2} x2,此点 x x x的类别为1或者-1:
x = ( x 1 , x 2 ) y = 1 y = − 1 x=(x^{1},x^{2}) \quad\quad y = 1 \quad\quad y = -1 x=(x1,x2)y=1y=1
  此时,超平面的方程为:
w 1 x 1 + w 2 x 2 + b = 0 w = ( w 1 , w 2 ) w^{1}x^{1}+w^{2}x^{2}+b=0 \quad w=(w^{1},w^{2}) w1x1+w2x2+b=0w=(w1,w2)
  因为之前我们分析过,需要保证直线两边的点到此超平面的距离最大,所以我们需要计算点 x x x到超平面的距离 d d d
d = ∣ w 1 x 1 + w 2 x 2 + b ∣ ( w 1 ) 2 + ( w 2 ) 2 d=\frac{|w^{1}x^{1}+w^{2}x^{2}+b|}{\sqrt{(w^{1})^{2} + (w^{2})^{2}}} d=(w1)2+(w2)2 w1x1+w2x2+b
  我们来观察上式中的分子,如果分子的绝对值里面是正数,说明类别为1;如果分子的绝对值里面是负数,说明类别为-1。所以我们可以把绝对值拿开,用 y y y来代替:
d = y ( w 1 x 1 + w 2 x 2 + b ) ( w 1 ) 2 + ( w 2 ) 2 d=\frac{y(w^{1}x^{1}+w^{2}x^{2}+b)}{\sqrt{(w^{1})^{2} + (w^{2})^{2}}} d=(w1)2+(w2)2 y(w1x1+w2x2+b)
  上式中的分子 y ( w 1 x 1 + w 2 x 2 + b ) y(w^{1}x^{1}+w^{2}x^{2}+b) y(w1x1+w2x2+b)被称为函数间隔;而上式中的分母 ( w 1 ) 2 + ( w 2 ) 2 \sqrt{(w^{1})^{2} + (w^{2})^{2}} (w1)2+(w2)2 ,是参数 w i ( 1 ≤ i ≤ 2 ) w^{i}(1≤i≤2) wi(1i2)的范数 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣。我们可以使用$\gamma 来代表函数间隔,使用参数 来代表函数间隔,使用参数 来代表函数间隔,使用参数w^{i}(1≤i≤2) 的范数 的范数 的范数||w|| 来表示上式中的分母,所以点到直线的距离 来表示上式中的分母,所以点到直线的距离 来表示上式中的分母,所以点到直线的距离d$就可以更新为:
d = γ ∣ ∣ w ∣ ∣ d=\frac{\gamma}{||w||} d=∣∣w∣∣γ
  还记得我们一开始的目的么?我们想要找到距离所有点间隔都是最大的直线,为了达成目的,首先我们要找到距离直线间隔最小的那些点:

请添加图片描述

图7:距离直线间隔最小的点

  可以使用 d ^ \widehat{d} d 来表示距离直线间隔最小的那些点:
d ^ = m i n ( γ 1 , γ 2 , … , γ N ) ∣ ∣ w ∣ ∣ \widehat{d}=\frac{min( \gamma_{1},\gamma_{2},\dots,\gamma_{N} )}{||w||} d =∣∣w∣∣min(γ1,γ2,,γN)
  当我们找到与直线距离最小的那些点之后,让最终的直线距离它们最大就可以了。还需要注意,因为函数间隔是最小的,所以对于任何一个样本,函数间隔都要大于等于这个最小的函数间隔,所以可以得到:
m a x γ ^ ∣ ∣ w ∣ ∣ γ ^ = m i n ( γ 1 , γ 2 , … , γ N ) s . t . y i ( w 1 x i 1 + w 2 x i 2 + b ) − γ ^ ≥ 0 max\frac{\widehat{\gamma}}{||w||} \quad \widehat{\gamma}=min( \gamma_{1},\gamma_{2},\dots,\gamma_{N} ) \\s.t. \quad y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) - \widehat{\gamma} \ge 0 max∣∣w∣∣γ γ =min(γ1,γ2,,γN)s.t.yi(w1xi1+w2xi2+b)γ 0
  另外,我们需要注意到函数间隔的性质。如果我们把 w 1 x 1 + w 2 x 2 + b = 0 w^{1}x^{1}+w^{2}x^{2}+b=0 w1x1+w2x2+b=0中的 w 1 , w 2 , b w^{1},w^{2},b w1,w2,b同时乘以2:
2 w 1 x 1 + 2 w 2 x 2 + 2 b = 0 2w^{1}x^{1}+2w^{2}x^{2}+2b=0 2w1x1+2w2x2+2b=0
  那么这两个函数仍然代表的是同一个超平面,但是函数间隔却变成了2倍:
y ( 2 w 1 x 1 + 2 w 2 x 2 + 2 b ) = 2 γ y(2w^{1}x^{1}+2w^{2}x^{2}+2b)=2\gamma y(2w1x1+2w2x2+2b)=2γ
  所以函数间隔的性质就是:函数间隔是可以任意缩放的。我们在计算的时候一般取1这个值。这样将函数间隔 γ ^ \widehat{\gamma} γ 的值取1后代入原式中就可以得到:
m a x 1 ∣ ∣ w ∣ ∣ s . t . y i ( w 1 x i 1 + w 2 x i 2 + b ) − 1 ≥ 0 max\frac{1}{||w||} \quad s.t. \quad y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) - 1 \ge 0 max∣∣w∣∣1s.t.yi(w1xi1+w2xi2+b)10

  此外,我们还需要注意两点:

  • 这条直线和最近点的间隔就是 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1,也就是我们要优化的目标:

请添加图片描述

图8:优化目标
  • 优化计算时之和这些最近的点相关,这些样本又被称为支持向量:

请添加图片描述

图9:支持向量

  下面我们的目标就很明确了,我们需要计算下面的优化问题:
m a x w , b 1 ∣ ∣ w ∣ ∣ s . t . y i ( w 1 x i 1 + w 2 x i 2 + b ) − 1 ≥ 0 max_{w,b}\frac{1}{||w||} \quad s.t. \quad y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) - 1 \ge 0 maxw,b∣∣w∣∣1s.t.yi(w1xi1+w2xi2+b)10
  有一个细节我们需要注意,就是 m a x w , b 1 ∣ ∣ w ∣ ∣ max_{w,b}\frac{1}{||w||} maxw,b∣∣w∣∣1等价于 m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 min_{w,b}\frac{1}{2}||w||^{2} minw,b21∣∣w2,所以原始的优化问题就可以更新为:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w 1 x i 1 + w 2 x i 2 + b ) − 1 ≥ 0 min_{w,b}\frac{1}{2}||w||^{2} \quad s.t. \quad y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) - 1 \ge 0 minw,b21∣∣w2s.t.yi(w1xi1+w2xi2+b)10
  根据拉格朗日乘子法,我们可以构建它的对偶问题:
min ⁡ α 1 2 ∑ i N ∑ j N α i α j y i y j ( x i ⋅ x j ) − ∑ i N α i  s.t.  ∑ i N α i y i = 0 α i ≥ 0 \begin{aligned}\min_{\alpha} & \frac{1}{2} \sum_{i}^{N} \sum_{j}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}}\right)-\sum_{i}^{N} \alpha_{i} \\\text { s.t. } & \sum_{i}^{N} \alpha_{i} y_{i}=0 \quad \alpha_{i} \geq 0\end{aligned} αmin s.t. 21iNjNαiαjyiyj(xixj)iNαiiNαiyi=0αi0

  上式的计算过程不在此赘述,总之,可以通过对偶问题得到一系列的 α \alpha α值,而 w w w b b b的解析解可以使用这些 α \alpha α值计算出来:
w ∗ = ∑ i N α i ∗ y i x i b ∗ = y j − ∑ i N α i ∗ y i ( x i ⋅ x j ) \begin{array}{l} \boldsymbol{w}^{*}=\sum_{i}^{N} \alpha_{i}^{*} y_{i} \boldsymbol{x}_{i} \\b^{*}=y_{j}-\sum_{i}^{N} \alpha_{i}^{*} y_{i}\left(\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}}\right)\end{array} w=iNαiyixib=yjiNαiyi(xixj)
  通过上面的计算,我们就可以得到直线的表达形式了,另外需要注意的是,以上讨论的内容都是基于线性可分的数据,所以此方法也被称为硬间隔支持向量机算法。

二、软间隔支持向量机算法

  刚才我们讨论的是可以被线性可分的例子,现在我们来看这样一个不能被线性可分的例子:

请添加图片描述

图10:无法被线性可分的例子

  可以注意到,因为两个红框内的点的存在,我们不可能找到一条直线,把两类数据完全分开:

请添加图片描述

图11:红框内的点导致此二维平面上的待分类点无法被线性可分

  虽然由于红框内的两个点导致无法用一条直线正确的将所有点分开,但是大多数的点仍然可以,此时我们称这些样本是弱线性可分的,这个时候我们仍然可以通过支持向量机找到一个次优解,不过需要允许有错误的点处于这个间隔之内:

请添加图片描述

图12:允许有错误的点处于一个合理的间隔内的次优解

  也就是说,对于任何一个样本,其函数间隔不再大于等于1,而是放宽了距离限制,下式中的 ξ \xi ξ就是一个松弛变量:
y i ( w 1 x i 1 + w 2 x i 2 + b ) ≥ 1 − ξ i y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) ≥ 1 - \xi_{i} yi(w1xi1+w2xi2+b)1ξi
  同样的,在优化过程中,我们也增加了一个惩罚项 C ∑ i N ξ i C\sum_{i}^{N} \xi_{i} CiNξi
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i N ξ i C ≥ 0  s.t.  y i ( w 1 x i 1 + w 2 x i 2 + b ) ≥ 1 − ξ i ξ i ≥ 0 \begin{aligned}\min_{w,b} & \frac{1}{2}||w||^{2} + C\sum_{i}^{N} \xi_{i} \quad C \ge 0 \\\text { s.t. } & y_{i}(w^{1}x^{1}_{i}+w^{2}x^{2}_{i}+b) ≥ 1 - \xi_{i} \quad \xi_{i} \ge 0\end{aligned} w,bmin s.t. 21∣∣w2+CiNξiC0yi(w1xi1+w2xi2+b)1ξiξi0
  同样,为了得到满足要求的直线方程,我们仍可根据拉格朗日乘子法,构建它的对偶问题:
min ⁡ α 1 2 ∑ i N ∑ j N α i α j y i y j ( x i ⋅ x j ) − ∑ i N α i  s.t.  ∑ i N α i y i = 0 C ≥ α i ≥ 0 \begin{aligned}\min_{\alpha} & \frac{1}{2} \sum_{i}^{N} \sum_{j}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}}\right)-\sum_{i}^{N} \alpha_{i} \\\text { s.t. } & \sum_{i}^{N} \alpha_{i} y_{i}=0 \quad C \ge \alpha_{i} \geq 0\end{aligned} αmin s.t. 21iNjNαiαjyiyj(xixj)iNαiiNαiyi=0Cαi0
  经过计算,我们仍可以得到满足要求的 w w w b b b的解析解:
w ∗ = ∑ i N α i ∗ y i x i b ∗ = y j − ∑ i N α i ∗ y i ( x i ⋅ x j ) \begin{array}{l} \boldsymbol{w}^{*}=\sum_{i}^{N} \alpha_{i}^{*} y_{i} \boldsymbol{x}_{i} \\b^{*}=y_{j}-\sum_{i}^{N} \alpha_{i}^{*} y_{i}\left(\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}}\right)\end{array} w=iNαiyixib=yjiNαiyi(xixj)
  可以看到,此种方法与硬间隔支持向量机算法的结论基本一致,最终仍可以得到满足要求的直线方程,这种拓展方法也被称为软间隔支持向量机算法。

三、非线性支持向量机算法

  我们再来看一个例子,在下图的直线上,无论我们使用什么方法,都不可能将两类数据完全分开:

请添加图片描述

图13:无法将此条直线上的两类数据分开

  不过我们可以换一个思路,将数据增加一个维度,使用 ( x 1 ) 2 (x^{1})^{2} (x1)2来构建第二个维度,这样我们又可以只用一条直线就把它们分开了:

请添加图片描述

图14:将直线上的数据升维后使用直线将两类数据分开

  我们再来考虑另外一种情况,如果待分类的点是类似于椭圆的方式分布的:

请添加图片描述

图15:以类似于椭圆的形状分布在二维平面上的两类数据

  基于上面讨论过的思路,我们可以使用 ( x 1 ) 2 (x^{1})^{2} (x1)2 ( x 2 ) 2 (x^{2})^{2} (x2)2作为数轴,把所有的数据点重新映射到平面上,这样它们又转化为线性可分的问题了:

请添加图片描述

图16:将平面上的数据升维后使用直线将两类数据分开

  这种通过升维或者空间映射的方法,我们称为非线性支持向量机算法。我们继续探讨,让我们继续看刚才待分类的点是类似于椭圆形分布的情况:

请添加图片描述

图17:以类似于椭圆的形状分布在二维平面上的两类数据

  其中任何一个样本点由 x 1 x^{1} x1 x 2 x^{2} x2两个坐标构成:
x = ( x 1 , x 2 ) x=(x^{1},x^{2}) x=(x1,x2)
  为了让它们变得线性可分,我们通过一个 ϕ \phi ϕ函数把 x 1 x^{1} x1映射为 ( x 1 ) 2 (x^{1})^2 (x1)2 x 2 x^{2} x2映射为 ( x 2 ) 2 (x^2)^{2} (x2)2
x ∼ ϕ ( x ) = ( ( x 1 ) 2 , ( x 2 ) 2 ) x \sim \phi(x) = ((x^1)^{2},(x^2)^2) xϕ(x)=((x1)2,(x2)2)
  这样我们可以定义另一个函数 K \boldsymbol{K} K,这个函数 K \boldsymbol{K} K代表着变换之后两个样本点积的结果:
K ( x 1 , x 2 ) = ϕ ( x 1 ) ϕ ( x 2 ) \boldsymbol{K}(\boldsymbol{x}_{\boldsymbol{1}} , \boldsymbol{x}_{\boldsymbol{2}})=\phi(x_{1})\phi(x_{2}) K(x1,x2)=ϕ(x1)ϕ(x2)
  这个定义两个样本点积过程的函数 K \boldsymbol{K} K,又被称为核函数。我们仍可以根据拉格朗日乘子法构建其对偶问题:
min ⁡ α 1 2 ∑ i N ∑ j N α i α j y i y j K ( x i ⋅ x j ) − ∑ i N α i  s.t.  ∑ i N α i y i = 0 C ≥ α i ≥ 0 \begin{aligned}\min_{\alpha} & \frac{1}{2} \sum_{i}^{N} \sum_{j}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{K} \left(\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}}\right)-\sum_{i}^{N} \alpha_{i} \\\text { s.t. } & \sum_{i}^{N} \alpha_{i} y_{i}=0 \quad C \ge \alpha_{i} \geq 0\end{aligned} αmin s.t. 21iNjNαiαjyiyjK(xixj)iNαiiNαiyi=0Cαi0
  最后,仍可计算出满足要求的 w w w b b b的解析解:
w ∗ x = ∑ i N α i ∗ y i K ( x , x i ) b ∗ = y j − ∑ i N α i ∗ y i K ( x i ⋅ x j ) \begin{array}{l} \boldsymbol{w}^{*}x=\sum_{i}^{N} \alpha_{i}^{*} y_{i} \boldsymbol{K} (\boldsymbol{x},\boldsymbol{x}_{\boldsymbol{i}}) \\b^{*}=y_{j}-\sum_{i}^{N} \alpha_{i}^{*} y_{i}\boldsymbol{K} (\boldsymbol{x}_{\boldsymbol{i}} \cdot \boldsymbol{x}_{\boldsymbol{j}})\end{array} wx=iNαiyiK(x,xi)b=yjiNαiyiK(xixj)
  通过上面的计算我们可以看到,非线性支持向量机算法与软间隔支持向量机算法的计算过程非常相似,只是使用了核函数 K \boldsymbol{K} K来代替原本样本的点积操作而已。


总结

  以上就是本文的全部内容了,这个系列还会继续更新,给大家带来更多的关于机器学习方面的算法和知识,下篇博客见!

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

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

相关文章

JavaScript Date 日期对象实例合集

文章目录JavaScript Date 日期对象实例合集一,使用 Date() 方法获得当日的日期二,使用 getFullYear() 获取年份三,使用getTime() 返回从 1970 年 1 月 1 日至今的毫秒数四,如何使用 setFullYear() 设置具体的日期五,使…

小兔鲜注册页面验证、阶段案例(登录、首页页面)(重点)、小兔鲜放大镜效果——DOM

目录 1. 小兔鲜注册页面验证 2. 阶段案例(登录、首页页面)(重点) 3. 小兔鲜放大镜效果 1. 小兔鲜注册页面验证 验证码模块有个小问题: 连续点击获取验证码会导致触发多次计时器,会导致计时出现问题&…

【Stata】从入门到精通.零基础小白必学的教程,一学就fei

视频教程移步:https://www.bilibili.com/video/BV1hK4y1d714/?p4&spm_id_frompageDriver&vd_sourcecc8074e9c81a225f214226065db53d32P3 第二讲 Stata处理数据全流程(上) P3 - 01:37内置数据 file example datasets使用…

FastDFS - 分布式文件存储系统

目录一、分布式文件存储1.分布式文件存储的由来2.常见的分布式存储框架二、FastDFS介绍三、FastDFS安装1.拉取镜像文件2.构建Tracker服务3.构建Storage服务4.测试图片上传四、客户端操作1.Fastdfs-java-client1.1 文件上传1.2 文件下载2.SpringBoot整合一、分布式文件存储 1.分…

【MySQL】什么是意向锁 IS IX 及值得学习的思想

文章目录前言行锁和表锁使用意向锁意向锁的算法意向锁的思想JDK 中相似的思想前言 之前看 MySQL 都刻意忽略掉了 IS 和 IX 锁,今天看 《MySQL 是怎样运行的》,把意向锁讲的很通透,本篇博文提炼一下思想。 I: Intention Lock(意向…

自建服务器系列-0元搭建linux服务器(windows笔记本)

0元搭建linux服务器一.windows装Centos71.1 centos7 iso镜像1.2 准备U盘1.3 UltraISO 启动盘制作工具安装1.4 准备一台windows 机器1.5 安装过程二 、连接无线wifi三、固定wifi ip3.1 查看网络状态3.2 查看DNS3.3 查看GATEWAY3.4 设置静态IP四、一键快速安装单机版k8s五、申请域…

游戏高度可配置化:通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解

游戏高度可配置化:通数据引擎在模块化游戏开发中的应用构想图解 ygluu 码客 卢益贵 目录 一、前言 二、模块化与插件 1、常规模块化 2、插件式模块化(插件开发) 三、通用数据引擎理论与构成 1、名字系统(数据类型&#xf…

数据结构与算法之树结构基础

目录为什么要使用树结构树结构基本概念树的种类树的存储与表示常见的一些树的应用场景为什么要使用树结构 线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查…

58-59-60 - 动态内存分配的实现

---- 整理自狄泰软件唐佐林老师课程 文章目录1. 讨论2. 动态内存管理2.1 动态内存管理的关键2.2 动态内存管理的分类3. 定长内存管理的设计与实现3.1 空间划分3.2 内存申请和归还3.3 关键数据类型3.4 思考4. 变长内存管理的设计与实现4.1 空间划分4.2 内存申请和归还4.3 关键数…

802.11 MCS 的最低SNR分析

常常看到这样的表格: 那么这个SNR如何而来? 看看RSSI和SNR的关系,它们之间隔了一个noise floor。从表格看得出,这个底噪在-80~-90之间。 而SNR的核心,也有类似的原因,它和BER有关。

tkinter界面的TCP通信/开启线程等待接收数据

前言 用简洁的语言写一个可以与TCP客户端实时通信的界面。之前做了一个项目是要与PLC进行信息交互的界面,在测试的时候就利用TCP客户端来实验,文末会附上TCP客户端。本文分为三部分,第一部分是在界面向TCP发送数据,第二部分是接收…

【Python从入门到进阶】9、流程控制语句-条件语句(if-else)

接上篇《8、Python的输入输出》 上一篇我们学习了Python的输入和输出相关内容。本篇我们来学习Python的控制流语句。 一、流程控制语句的含义 之前我们分别学习过“变量及数据类型”、“运算符”,其中“变量及数据类型”相当于我们学习自然语言中的“字”&#xf…

【数据库系统概论】基础知识总结

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

Linux基础命令和工具使用详解

Linux基础命令和工具使用详解一、grep搜索字符二、find查找文件三、ls 显示文件四、wc命令计算字数五、uptime机器启动时间负载六、ulimit用户资源七、curl http八、scp远程拷贝九、dos2unix和unix2dos十、sed 行处理10.1、简单模式10.2、替换模式十一、awk 列处理11.1、打印某…

【C++从入门到放弃】类和对象(上)

🧑‍💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! 类和对…

JavaScript 高级1 :面向对象

JavaScript 高级1 :面向对象 Date: January 16, 2023 Text: 面向对象、ES6中类和对象、类的继承、面向对象案例 目标: 能够说出什么是面向对象 能够说出类和对象的关系 能够使用 class 创建自定义类型 能够说出什么是继承 面向对象编程介绍 面向过…

JDK安装指导

Oracle官网地址https://www.oracle.com/java版本查询这里仅标识了java19和java17java archived 查看更多随便进入一个,根据后缀提示下载对应包即可Linux安装(示例 java 1.8版本)https://www.oracle.com/java/technologies/javase/javase8u211…

基于MaixBit(K210芯片)的图像识别猜拳手势博弈装置

本文介绍了一种基于嵌入式平台开发的图像识别部署装置,其主要功能包括实现机器与人的“猜拳博弈”,其组成分为三个部分:手势检测数据集图像识别模型训练模型格式部署maixbit开发板部署手势检测数据集:本项目的数据集包括三种标签&…

2023自动化测试岗位需求的 7 项必备技能 (最新版)

目录:导读 一、自动化测试员技能——编程语言 二、自动化测试员技能–出色的手动测试技能 三、.自动化测试员技能–自动化工具专业知识 四、自动化测试员技能–了解业务需求 五、自动化测试员技能–自动化工具故障排除 六、自动化测试员技能–具有测试管理工具…

Android 网络框架——Retrofit源码精析

众所周知,Retrofit是OkHttp的封装,APP对网络交互部分的实现基本上都是RxJavaRetrofitOkHttp架构(或协程RetrofitOkHttp),可以说,Retrofit已经广为人知。本文主要介绍Retrofit主线源码实现机制,及…