【机器学习与实现】支持向量机SVM

news2024/11/18 17:35:59

目录

    • 一、SVM (Support Vector Machine) 概述
      • (一)支持向量机SVM的主要特点
      • (二)支持向量与间隔最大化
      • (三)线性可分/不可分
      • (四)软间隔 (soft margin) 与核技巧 (kernel trick)
      • (五)核技巧配合软间隔解决线性不可分问题
    • 二、硬间隔解决线性可分问题
      • (一)线性可分的决策超平面
      • (二)硬间隔、决策边界和支持向量之间关系
      • (三)最大化间隔宽度
      • (四)最小化损失函数及其求解方法
      • (五)带不等式约束的优化问题的解与KKT条件
      • (六)拉格朗日对偶问题及其求解
    • 三、软间隔解决线性不可分问题
      • (一)软间隔SVM分类器的核心思想
      • (二)软间隔SVM分类器的损失函数
      • (三)核技巧使用映射函数升维解决分类问题
      • (四)软间隔+核技巧的SVM优化问题
      • (五)拉格朗日对偶问题与核函数
      • (六)常见的核函数
    • 四、scikit-learn中的SVM分类器及其主要参数
      • (一)多分类的情形
      • (二)SVM的属性和方法
    • 五、支持向量机应用示例


一、SVM (Support Vector Machine) 概述

(一)支持向量机SVM的主要特点

  • 支持向量机 SVM 是一种既可以用于分类、也可以用于回归问题的监督学习算法。
  • SVM 的主要思想是找到一个具有最大间隔 (max margin) 的分类决策超平面,从而可以将不同类别的样本点分隔开。
  • SVM 是一个非常强大的算法,因为它使用内积核函数将原始输入数据映射到高维空间,从而能够处理高维空间和非线性问题,并且能够有效地避免过拟合。
  • SVM 的缺点是它对于大型数据集的计算成本很高,以及内积核函数的选择和调整需要一定的经验和技巧。

(二)支持向量与间隔最大化

在这里插入图片描述
图中深蓝色线便是决策边界,也称分离超平面;两条虚线之间宽度叫做间隔 (margin)。支持向量机的优化目标为——间隔最大化

支持向量(红蓝加圈的点)确定决策边界位置;而其他数据并没有对决策起到任何作用。因此,SVM 对于数据特征数量远高于数据样本量的情况也有效(可以处理高维数据)。

(三)线性可分/不可分

在这里插入图片描述

  • 线性可分问题采用硬间隔 (hard margin);即间隔内没有数据点。
  • 支持向量机解决线性不可分问题,需要并用软间隔和核技巧。

(四)软间隔 (soft margin) 与核技巧 (kernel trick)

在这里插入图片描述

  • 软间隔相当于一个缓冲区。使用软间隔分类时,允许有数据点侵入间隔,甚至超越间隔带。
  • 核技巧将数据映射到高维特征空间,是一种数据升维。

(五)核技巧配合软间隔解决线性不可分问题

在这里插入图片描述

二、硬间隔解决线性可分问题

(一)线性可分的决策超平面

1、决策超平面定义

决策超平面定义为: f ( x ) = w T x + b = 0 f(x)=w^Tx+b=0 f(x)=wTx+b=0,其中 w w w 是超平面的法向量

在这里插入图片描述
接下来我们的目标是研究不同类别的支持向量间的间距如何用系数向量 w w w b b b 表示出来。只要能表示出来这个间距,通过间距最大化就可能求出系数向量 w w w b b b,这样就得到了决策面。

2、平面外一点到平面的距离

在这里插入图片描述

  • x x x 是平面上任一点, q q q 是平面外任一点,向量 a a a 是两者的连线,则有: a = q − x , w T + b = 0 a=q-x, w^T+b=0 a=qx,wT+b=0

  • 设向量 a a a 在法向量 w w w 方向的投影向量 d d d 的长度为 D D D,则 D = ∣ w T a ∣ ∣ ∣ w ∣ ∣ = ∣ w T ( q − x ) ∣ ∣ ∣ w ∣ ∣ = ∣ w T q + b ∣ ∣ ∣ w ∣ ∣ \begin{aligned}D=\frac{|w^Ta|}{||w||}=\frac{|w^T(q-x)|}{||w||}=\frac{|w^Tq+b|}{||w||}\end{aligned} D=∣∣w∣∣wTa=∣∣w∣∣wT(qx)=∣∣w∣∣wTq+b

  • 一般情况下距离不考虑正负。但是,对于分类问题,考虑距离正负便于判断点和超平面关系,因此去掉分子的绝对值符号,用 D > 0 D>0 D>0 表示 q q q 在平面上方;反之 D < 0 D<0 D<0 表示 q q q 在平面下方。

(二)硬间隔、决策边界和支持向量之间关系

在这里插入图片描述

  • 硬间隔的下边界为 l 1 l_1 l1 l 1 l_1 l1 到决策边界距离为 − h -h h。而支持向量 C 在 l 1 l_1 l1 上,则有: w T x + b ∣ ∣ w ∣ ∣ = − h \begin{aligned}\frac{w^Tx+b}{||w||}=-h\end{aligned} ∣∣w∣∣wTx+b=h

  • 硬间隔的上边界为 l 2 l_2 l2 l 2 l_2 l2 到决策边界距离为 + h +h +h。而支持向量 A、B 在 l 2 l_2 l2 上,则有: w T x + b ∣ ∣ w ∣ ∣ = + h \begin{aligned}\frac{w^Tx+b}{||w||}=+h\end{aligned} ∣∣w∣∣wTx+b=+h

  • 距离决策边界大于等于 + h +h +h 的样本点,标记为 y = + 1 y=+1 y=+1;距离决策边界小于等于 − h -h h 的样本点,标记为 y = − 1 y=-1 y=1,则有:
    { w T x + b ∣ ∣ w ∣ ∣ ≥ + h , y = + 1 w T x + b ∣ ∣ w ∣ ∣ ≤ − h , y = − 1 ⇒ ( w T x + b ) y ∣ ∣ w ∣ ∣ h ≥ 1 \left\{ \begin{array}{l} \begin{aligned}\frac{w^Tx+b}{||w||}≥+h,y=+1\end{aligned}\\[3ex] \begin{aligned}\frac{w^Tx+b}{||w||}≤-h,y=-1\end{aligned} \end{array} \right. \Rightarrow \frac{(w^Tx+b)y}{||w||h}≥1 ∣∣w∣∣wTx+b+hy=+1∣∣w∣∣wTx+bhy=1∣∣w∣∣h(wTx+b)y1

(三)最大化间隔宽度

为简化计算,令分母 ∣ ∣ w ∣ ∣ h = 1 ||w||h=1 ∣∣w∣∣h=1,则间隔上下边界的解析式变为:
{ w T x + b = + 1 w T x + b = − 1 \left\{ \begin{array}{l} w^Tx+b=+1 \\[1ex] w^Tx+b=-1 \end{array} \right. {wTx+b=+1wTx+b=1

间隔宽度 2 h = 2 ∣ ∣ w ∣ ∣ 2h=\frac{2}{||w||} 2h=∣∣w∣∣2,最大化间隔宽度可表示为
arg max ⁡ w , b 2 ∣ ∣ w ∣ ∣ s u b j e c t   t o   ( x ( i ) w + b ) y ( i ) ≥ 1 , i = 1 , 2 , 3 , . . . , n \begin{aligned} &\argmax_{w,b} \frac{2}{||w||}\\[3ex] &subject \ to \ (x^{(i)}w+b)y^{(i)}≥1,i=1,2,3,...,n \end{aligned} w,bargmax∣∣w∣∣2subject to (x(i)w+b)y(i)1i=1,2,3,...,n

(四)最小化损失函数及其求解方法

最大化间隔宽度等价于求解下列带不等式约束的最小化问题:
arg min ⁡ w , b ∣ ∣ w ∣ ∣ 2 2 = w T w 2 = w ⋅ w 2 s u b j e c t   t o   ( x ( i ) w + b ) y ( i ) ≥ 1 , i = 1 , 2 , 3 , . . . , n (a)式 \begin{aligned} &\argmin_{w,b} \frac{||w||^2}{2}=\frac{w^Tw}{2}=\frac{w\cdot w}{2}\tag*{(a)式}\\[3ex] &subject \ to \ (x^{(i)}w+b)y^{(i)}≥1,i=1,2,3,...,n \end{aligned} w,bargmin2∣∣w2=2wTw=2wwsubject to (x(i)w+b)y(i)1i=1,2,3,...,n(a)

  • 求解方法1:因为 ∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w2 是严格的凸函数,所以该问题属于经典的凸优化问题,可以用 QP (二次规划) 算法求解。

  • 求解方法2:通过拉格朗日乘子法,把上述带约束的最小化问题转化成无约束的最小化问题:
    L ( w , b , λ ) = w ⋅ w 2 + ∑ i = 1 n λ i ( 1 − y ( i ) ( x ( i ) w + b ) ) (b)式 L(w,b,\lambda)=\frac{w\cdot w}{2}+\sum_{i=1}^n\lambda_i(1-y^{(i)}(x^{(i)}w+b))\tag*{(b)式} L(w,b,λ)=2ww+i=1nλi(1y(i)(x(i)w+b))(b) 其中, λ = [ λ 1   λ 2   ⋯   λ n ] T \lambda=\left[\begin{matrix}\lambda_1 \ \lambda_2 \ \cdots \ \lambda_n\end{matrix} \right]^T λ=[λ1 λ2  λn]T

(五)带不等式约束的优化问题的解与KKT条件

根据优化理论,上述(a)式子存在最优解的充要条件是满足如下KKT条件:
K T T 条件 { ∂ L ( w , b , λ ) ∂ w = 0 ,   ∂ L ( w , b , λ ) ∂ b = 0 ,  其中 L ( w , b , λ ) 是前面的 ( b ) 式 λ i ≥ 0 g i ( w , b ) = 1 − y ( i ) ( w T x ( i ) + b ) ≤ 0 ,   i = 1 , 2 , . . . , n λ i g i ( w , b ) = 0 KTT条件 \left\{ \begin{array}{l} \begin{aligned}\frac{\partial L(w,b,\lambda)}{\partial w}=0, \ \frac{\partial L(w,b,\lambda)}{\partial b}=0, \ 其中L(w,b,\lambda)是前面的(b)式\end{aligned}\\[1ex] \begin{aligned}\lambda_i≥0 \end{aligned}\\[1ex] \begin{aligned}g_i(w,b)=1-y^{(i)}(w^Tx^{(i)}+b)≤0, \ i=1,2,...,n\end{aligned}\\[1ex] \lambda_ig_i(w,b)=0 \end{array} \right. KTT条件 wL(w,b,λ)=0, bL(w,b,λ)=0, 其中L(w,b,λ)是前面的(b)λi0gi(w,b)=1y(i)(wTx(i)+b)0, i=1,2,...,nλigi(w,b)=0

上面第4式 λ i g i ( w , b ) = 0 \lambda_ig_i(w,b)=0 λigi(w,b)=0 也称为互补条件,它表示:若 λ i > 0 \lambda_i>0 λi>0,则 1 − y ( i ) ( w T x ( i ) + b ) = 0 1-y^{(i)}(w^Tx^{(i)}+b)=0 1y(i)(wTx(i)+b)=0,即对应的样本点 x ( i ) x^{(i)} x(i) 一定是落在间隔超平面上的支持向量;若 g i ( w , b ) < 0 g_i(w,b)<0 gi(w,b)<0,即 y ( i ) ( w T x ( i ) + b ) > 1 y^{(i)}(w^Tx^{(i)}+b)>1 y(i)(wTx(i)+b)>1 则一定有 λ i = 0 \lambda_i=0 λi=0,说明非支持向量对应的拉格朗日乘子一定为0。

因为支持向量数量较少,说明大于0的拉格朗日乘子较少,因此拉格朗日向量是一个稀疏向量。

(六)拉格朗日对偶问题及其求解

根据KKT条件第一行的求导式等于0,可得:
{ ∂ L ( w , b , λ ) ∂ w = w − ∑ i = 1 n λ i y ( i ) x ( i ) T = 0 ∂ L ( w , b , λ ) ∂ b = ∑ i = 1 n λ i y ( i ) = 0 ⇒ { w = ∑ i = 1 n λ i y ( i ) x ( i ) T ∑ i = 1 n λ i y ( i ) = 0 (c)式 \left\{ \begin{array}{l} \begin{aligned}\frac{\partial L(w,b,\lambda)}{\partial w}=w-\sum_{i=1}^n\lambda_iy^{(i)}x^{(i)T}=0\end{aligned}\\[2ex] \begin{aligned}\frac{\partial L(w,b,\lambda)}{\partial b}=\sum_{i=1}^n\lambda_iy^{(i)}=0\end{aligned} \end{array} \right. \Rightarrow \left\{ \begin{array}{l} \begin{aligned}w=\sum_{i=1}^n\lambda_iy^{(i)}x^{(i)T}\end{aligned}\\[2ex] \begin{aligned}\sum_{i=1}^n\lambda_iy^{(i)}=0\end{aligned} \end{array} \right.\tag*{(c)式} wL(w,b,λ)=wi=1nλiy(i)x(i)T=0bL(w,b,λ)=i=1nλiy(i)=0 w=i=1nλiy(i)x(i)Ti=1nλiy(i)=0(c)

( c ) (c) (c) 式带入前面的 ( b ) (b) (b) 式并消去 w w w b b b 向量,得到只含拉格朗日乘子的损失函数:
L ( λ ) = ∑ i = 1 n λ i − ∑ j = 1 n ∑ i = 1 n λ i λ j y ( i ) y ( j ) ( x ( i ) ⋅ x ( j ) ) 2 (d)式 \begin{aligned} L(\lambda)=\sum_{i=1}^n\lambda_i-\frac{\sum_{j=1}^n\sum_{i=1}^n\lambda_i\lambda_jy^{(i)}y^{(j)}\left(x^{(i)}\cdot x^{(j)}\right)}{2}\tag*{(d)式} \end{aligned} L(λ)=i=1nλi2j=1ni=1nλiλjy(i)y(j)(x(i)x(j))(d) 其中, x ( i ) ⋅ x ( j ) x^{(i)}\cdot x^{(j)} x(i)x(j) 为两个向量的内积。

由此得到拉格朗日对偶问题。该对偶问题可以用 SMO (序列最小化) 算法来高效求解。
arg min ⁡ λ ∑ i = 1 n λ i − ∑ j = 1 n ∑ i = 1 n λ i λ j y ( i ) y ( j ) ( x ( i ) ⋅ x ( j ) ) 2 s u b j e c t   t o { ∑ i = 1 n λ i y ( i ) = 0 λ i ≥ 0 ,    i , j = 1 , 2 , 3 , . . . , n \begin{aligned} &\argmin_\lambda\sum_{i=1}^n\lambda_i-\frac{\sum_{j=1}^n\sum_{i=1}^n\lambda_i\lambda_jy^{(i)}y^{(j)}\left(x^{(i)}\cdot x^{(j)}\right)}{2}\\[3ex] &subject \ to \left\{ \begin{array}{l} \begin{aligned}\sum_{i=1}^n\lambda_iy^{(i)}=0\end{aligned}\\[1ex] \begin{aligned}\lambda_i≥0, \ \ i,j=1,2,3,...,n\end{aligned} \end{array} \right. \end{aligned} λargmini=1nλi2j=1ni=1nλiλjy(i)y(j)(x(i)x(j))subject to i=1nλiy(i)=0λi0,  i,j=1,2,3,...,n

三、软间隔解决线性不可分问题

(一)软间隔SVM分类器的核心思想

在这里插入图片描述
软间隔SVM分类器的核心思想是允许一些样本不满足硬间隔约束/条件,即允许对一些样本犯错。

这样做是牺牲部分数据点分类准确性,来换取更宽的间隔,由此降低了模型对噪声点的敏感性,可以避免SVM分类器过拟合,提升了模型的泛化性能。

(二)软间隔SVM分类器的损失函数

arg min ⁡ w , b , ξ w ⋅ w 2 + C ∑ i = 1 n ξ i s u b j e c t   t o { y ( i ) ( x ( i ) w + b ) ≥ 1 − ξ i ,   i = 1 , 2 , 3 , . . . , n ξ i ≥ 0 \begin{aligned} &\argmin_{w,b,\xi}\frac{w\cdot w}{2}+C\sum_{i=1}^n\xi_i \\[3ex] &subject \ to \left\{ \begin{array}{l} \begin{aligned}y^{(i)}\left(x^{(i)}w+b\right)≥1-\xi_i, \ i=1,2,3,...,n\end{aligned}\\[1ex] \begin{aligned}\xi_i≥0\end{aligned} \end{array} \right. \end{aligned} w,b,ξargmin2ww+Ci=1nξisubject to y(i)(x(i)w+b)1ξi, i=1,2,3,...,nξi0

软间隔有两个重要参数:

  • 松弛变量 (slack variable) ξ \xi ξ,一般读作 /ksaɪ/
  • 惩罚因子 (penalty parameter) C

1、松弛变量

松弛变量 ξ \xi ξ 表示样本离群的程度,松弛变量值越大,对应的样本离群越远,松弛变量为零,则对应的样本没有离群。SVM希望各样本点的松弛变量之和 ∑ i = 1 n ξ i \begin{aligned}\sum_{i=1}^n\xi_i\end{aligned} i=1nξi 越小越好。

2、惩罚因子

(1)惩罚因子 C 是用户设定的一个大于等于0的超参数

  • C决定了你有多重视离群点带来的损失,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点。
  • 最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。
  • 较小的C值代表着较高的容错性,此时训练误差可能会大,但泛化误差可能会小。

(2)惩罚因子对软间隔宽度和决策边界的影响

在这里插入图片描述
管制宽松(对应C值小),则弹性空间大,容错性高,未来可能发展得更好!

(三)核技巧使用映射函数升维解决分类问题

例1
在这里插入图片描述
例2

在这里插入图片描述

(四)软间隔+核技巧的SVM优化问题

软间隔 + 核技巧的SVM 优化问题的基本思想就是通过最小化如下的损失函数,希望在映射后的高维空间求解一个最优分类超平面:
arg min ⁡ w , b w ⋅ w 2 + C ∑ i = 1 n ξ i s u b j e c t   t o { y ( i ) ( w ⋅ ϕ ( x ( i ) ) + b ) ≥ 1 − ξ i ,   i = 1 , 2 , 3 , . . . , n ξ i ≥ 0 \begin{aligned} &\argmin_{w,b}\frac{w\cdot w}{2}+C\sum_{i=1}^n\xi_i \\[3ex] &subject \ to \left\{ \begin{array}{l} \begin{aligned}y^{(i)}\left(w\cdot \phi\left(x^{(i)}\right)+b\right)≥1-\xi_i, \ i=1,2,3,...,n\end{aligned}\\[1ex] \begin{aligned}\xi_i≥0\end{aligned} \end{array} \right. \end{aligned} w,bargmin2ww+Ci=1nξisubject to y(i)(wϕ(x(i))+b)1ξi, i=1,2,3,...,nξi0 其中, ϕ ( ) \phi() ϕ() 是映射函数。

(五)拉格朗日对偶问题与核函数

引入映射函数后的无约束拉格朗日对偶问题的形式如下:
L ( w , b , λ ) = w ⋅ w 2 + ∑ i = 1 n λ i ( 1 − y ( i ) ( w ⋅ ϕ ( x ( i ) ) + b ) ) = ∑ i = 1 n λ i − ∑ j = 1 n ∑ i = 1 n λ i λ j y ( i ) y ( j ) ϕ ( x ( i ) ) ⋅ ϕ ( x ( j ) ) ⏞ K e r n e l f u n c t i o n 2 \begin{aligned} L(w,b,\lambda)&=\frac{w\cdot w}{2}+\sum_{i=1}^n\lambda_i\left(1-y^{(i)}\left(w\cdot \phi\left(x^{(i)}\right)+b\right)\right)\\[3ex] &=\sum_{i=1}^n\lambda_i-\frac{\sum_{j=1}^n\sum_{i=1}^n\lambda_i\lambda_jy^{(i)}y^{(j)}\overbrace{\phi\left(x^{(i)}\right)\cdot\phi \left(x^{(j)}\right)}^{Kernel function}}{2} \end{aligned} L(w,b,λ)=2ww+i=1nλi(1y(i)(wϕ(x(i))+b))=i=1nλi2j=1ni=1nλiλjy(i)y(j)ϕ(x(i))ϕ(x(j)) Kernelfunction

  • 这里出现了两个向量映射到高维空间后的向量内积的形式
  • 因为映射函数 ϕ \phi ϕ 是未知的,所以该内积无法直接计算
  • 实际通过使用核函数来模拟高维空间的向量内积

核函数一般记为 κ ( x ( i ) , x ( j ) ) \kappa\left(x^{(i)},x^{(j)}\right) κ(x(i),x(j)),并且定义核函数等于高维空间的向量内积:
κ ( x ( i ) , x ( j ) ) = ϕ ( x ( i ) ) ⋅ ϕ ( x ( j ) ) \kappa\left(x^{(i)},x^{(j)}\right)=\phi\left(x^{(i)}\right)\cdot\phi \left(x^{(j)}\right) κ(x(i),x(j))=ϕ(x(i))ϕ(x(j))

(六)常见的核函数

如何选择核函数还没有统一的方法,但可以用常见的四种核函数去尝试分类。其中,线性核是支持向量机 SVM 的标配。

  • 线性核 (linear kernel) : κ ( x , q ) = x ⋅ q \begin{aligned}\kappa(x,q)=x\cdot q\end{aligned} κ(x,q)=xq
  • 多项式核 (polynomial kernel) : κ p o l y ( d ) ( x , q ) = ( γ x ⋅ q + r ) d \begin{aligned}\kappa_{poly(d)}(x,q)=(\gamma x\cdot q+r)^d\end{aligned} κpoly(d)(x,q)=(γxq+r)d
  • 高斯核 (Gaussian kernel),也叫径向基核 RBF (radial basis function kernel) : κ R B F ( x , q ) = exp ⁡ ( − γ ∣ ∣ x − q ∣ ∣ 2 ) \begin{aligned}\kappa_{RBF}(x,q)=\exp\left(-\gamma||x-q||^2\right)\end{aligned} κRBF(x,q)=exp(γ∣∣xq2)
  • Sigmoid 核 (sigmoid kernel) : κ S i g m o i d ( x , q ) = tanh ⁡ ( γ x ⋅ q + r ) \begin{aligned}\kappa_{Sigmoid}(x,q)=\tanh(\gamma x\cdot q+r)\end{aligned} κSigmoid(x,q)=tanh(γxq+r)

以二次核为例

在这里插入图片描述
可以发现 ϕ ( ) \phi() ϕ() 映射规则并不唯一。或者说, ϕ ( ) \phi() ϕ() 的具体形式并不重要,我们关心的是映射规则和标量结果。

四、scikit-learn中的SVM分类器及其主要参数

常用于构建SVM模型的类为SVC,其基本语法格式如下:

class sklearn.svm.SVC(C=1.0, kernel='rbf', degree=3, gamma='auto', coef0=0.0, shrinking=True, probability=False,
tol=0.001, cache_size=200, class_weight=None, verbose=False, max_iter=-1, decision_function_shape='ovr',
random_state=None)

在这里插入图片描述

(一)多分类的情形

基本思想是将多分类任务分解为多个二分类任务,对于每一个二分类任务使用一个SVM分类器。

在这里插入图片描述

(二)SVM的属性和方法

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

五、支持向量机应用示例

取自UCI公共测试数据库中的汽车评价数据集作为本例的数据集,该数据集共有6个特征数据,1个分类标签,共1728条记录,部分数据如下表所示。

汽车评价数据表
a 1 a_1 a1 a 2 a_2 a2 a 3 a_3 a3 a 4 a_4 a4 a 5 a_5 a5 a 6 a_6 a6 d d d
4422323
4422333
4422313
4422223
4422233
4422213
4422123
4422133
4422113
4424323
4424333
4424313

注:数据集下载地址为:http://archive.ics.uci.edu/dataset/19/car+evaluation

数据集car.xlsx下载地址:
链接:https://pan.quark.cn/s/5c25b1f7fb08
提取码:z8Q7

其中特征 a 1 a_1 a1 ~ a 6 a_6 a6 的含义及取值依次为:

  • Buying (购买价格) :v-high, high, med, low
  • maint (维修成本) :v-high, high, med, low
  • Doors (车门数量) :2, 3, 4, 5-more
  • Persons (载客人数) :2, 4, more
  • lug_boot (行李箱大小) :small, med, big
  • Safety (安全等级) :low, med, high

分类标签 d d d 的取值情况为:unacc 1, acc 2, good 3, v-good 4

取数据集的前1690条记录作为训练集,余下的作为测试集,计算其预测准确率。其计算流程及思路如下:

1、数据获取

import pandas as pd
data = pd.read_excel('car.xlsx')

2、训练样本与测试样本划分。其中训练用的特征数据用x表示,预测变量用y表示;测试样本则分别记为 x 1 x_1 x1 y 1 y_1 y1

x = data.iloc[:1690,:6].as_matrix()
y = data.iloc[:1690,6].as_matrix()
x1= data.iloc[1691:,:6].as_matrix()
y1= data.iloc[1691:,6].as_matrix()

3、支持向量机分类模型构建

(1)导入支持向量机模块svm。

from sklearn import svm

(2)利用svm创建支持向量机类svm。

clf = svm.SVC(kernel='rbf')

其中核函数可以选择线性核、多项式核、高斯核、sig核,分别用linear,poly,rbf,sigmoid表示,默认情况下选择高斯核。

(3)调用svm中的fit()方法进行训练。

clf.fit(x, y)

(4)调用svm中的score()方法,考查其训练效果。

rv=clf.score(x, y); # 模型准确率(针对训练数据)

(5)调用svm中的predict()方法,对测试样本进行预测,获得其预测结果。

R=clf.predict(x1)

示例代码如下:

import pandas as pd
data = pd.read_excel('car.xlsx')
x = data.iloc[:1690,:6].as_matrix()
y = data.iloc[:1690,6].as_matrix()
x1= data.iloc[1691:,:6].as_matrix()
y1= data.iloc[1691:,6].as_matrix()
from sklearn import svm
clf = svm.SVC(kernel='rbf')  
clf.fit(x, y) 
rv=clf.score(x, y);
R=clf.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:',R)
print('预测准确率为:',Rs)

在这里插入图片描述

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

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

相关文章

web前端学习笔记11

11. CSS3高级特效 11.1 CSS3变形 CSS3变形是一些效果的集合, 如平移、旋转、缩放、倾斜效果 每个效果都可以称为变形(transform),它们可以分别操控元素发生平移、旋转、缩放、倾斜等变化 语法 transform:[transform-function] ; /* 设置变形函数,可以是一个,也可以是多…

vscode插件-07Java

文章目录 Extension Pack for JavaSpring Initializr Java SupportCodeSwingJdk下载JDK安装jdkWindows安装jdkLinux安装jdk&#xff08;以Ubuntu为例&#xff09; jdk环境变量在VScode中配置Windows系统中配置Linux系统中配置&#xff08;以Ubuntu为例&#xff09; Extension P…

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常

arcgis 10.6 工具栏操作error 001143 后台服务器抛出异常 环境 win10arcgis 10.6 问题 执行定义投影要素转线出现 Error: 001143:后台服务器抛出异常&#xff08;差点重装10.6&#xff09; 如下图所示&#xff1a; 解决方法 通过在菜单工具条上单击地理处理 > 地理处…

Linux进程相关查询

1、Linux下查看某些进程的启动时间和运行时长 比如查看java进程的启动时间和运行时长 # ps -ef|grep -v grep|grep -w java|awk {print $2} # ps -eo pid,lstart,etime | grep 1973 其中&#xff1a; Mon Jun 24 09:25:41 2019 为java进程的启动时间 4-00:16:55 …

LeetCode-Pow(x, n)【递归 数学】

[TOC](LeetCode-Pow(x, n)【递归 数学】) 题目描述&#xff1a; 实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xf…

【Linux】套接字的理解 基于TCP协议的套接字编程(单/多进程 / 线程池|英汉互译 / C++)

文章目录 1. 前言1.1 网络方面的预备知识&#x1f447;1.2 了解TCP协议 2. 关于套接字编程2.1 什么是套接字 Socket2.2 socket 的接口函数2.3 Udp套接字编程的步骤2.4 sockaddr 结构 3. 代码实现3.1 makefile3.2 log.hpp3.3 tcp_server.hpp① 框架② service() 通信服务③ init…

HTML静态网页成品作业(HTML+CSS)——利物浦足球俱乐部介绍网页设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;共有5个页面。 二、作品演示 三、代码目录 四、网站代码 HTML部分代…

【webrtc】内置opus解码器的移植

m98 ,不知道是什么版本的opus,之前的交叉编译构建: 【mia】ffmpeg + opus 交叉编译 【mia】ubuntu22.04 : mingw:编译ffmpeg支持opus编解码 看起来是opus是1.3.1 只需要移植libopus和opus的webrtc解码部分即可。 linux构建的windows可运行的opus库 G:\NDDEV\aliply-0.4\C…

0407放大电路的频率响应

放大电路的频率响应 单时间常数RC电路的频率响应中频响应高频响应低频响应全频域响应 放大电路频率响应概述1. 直接耦合放大电路频域响应阻容耦合放大电路频域响应 4.7.1 单时间常数RC电路的频率响应 4.7.2 放大电路频率响应概述 4.7.3 单级共射极放大电路的频率响应 4.7.4 单级…

51单片机-数码管显示多个

书接上回 51单片机-数码管显示单个 http://t.csdnimg.cn/Ii6x0 一.简单全亮 ps:有好几次没电亮,是没加阻值,看了这方面的基础要好好补补了. 这种是不需要控制哪个亮,全部接了电.直接用上一篇的代码,就可以每个都动态变化 #include <reg52.h> #include <intrins.h…

aws eks集成wasm运行时并启动pod

参考资料 WebAssembly 在云原生中的实践指南&#xff0c;https://cloud.tencent.com/developer/article/2324065 作为一种通用字节码技术&#xff0c;wasm的初衷是在浏览器中的程序实现原生应用性能。高级语言将wasm作为目标语言进行编译并运行在wasm解释器中。和nodejs类似的…

Unity Render Streaming 云渲染 外网访问

初版&#xff1a; 日期&#xff1a;2024.5.20 前言&#xff1a;临时思路整理&#xff0c;后期会详细补充 环境&#xff1a; 1. 阿里云服务器 需要安装好nodejs 、npm 2. windows电脑&#xff0c;需安装好 nodejs 、npm 3.Unity 2021.3.15f1 4.Unity Render Streaming …

景源畅信电商:抖店怎么提高店铺的权重?

在竞争激烈的电商市场&#xff0c;如何提升抖店店铺权重成为商家关注的焦点。店铺权重是决定商品搜索排名的关键因素之一&#xff0c;直接关系到店铺流量和销量。提高店铺权重并非一蹴而就&#xff0c;而是一个系统工程&#xff0c;需要从多个维度着手优化。 一、优化商品标题和…

Dubbo生态之dubbo功能

1.Dubbo生态功能的思考 dubbo具有哪些功能呢&#xff1f;我们要根据dubbo的架构和本质是用来干什么的来思考? 首先对于分布式微服务&#xff0c;假设我们有两个服务A和B&#xff0c;并且都是集群部署的。那么按照我们正常的流程应该是启动两个微服务项目&#xff08;启动时应该…

大模型落地竞逐,云计算大厂“百舸争流”

作者 | 辰纹 来源 | 洞见新研社 从ChatGPT到Sora&#xff0c;从图文到视频&#xff0c;从通用大模型到垂直大模型……经过了1年多时间的探索&#xff0c;大模型进入到以落地为先的第二阶段。 行业的躁动与资本的狂热相交汇&#xff0c;既造就了信仰派的脚踏实地&#xff0c;也…

二十五篇:嵌入式系统揭秘:基础理论与实践探索

嵌入式系统揭秘&#xff1a;基础理论与实践探索 1. 嵌入式系统的定义与特性 1.1 详细解释 嵌入式系统&#xff0c;作为一种特殊的计算机系统&#xff0c;其设计目的是为了执行一个或多个特定的功能。与通用计算机相比&#xff0c;嵌入式系统通常被集成到更大的设备中&#xf…

web压力测试,要不要过滤掉JS,CSS等请求?

在进行性能测试&#xff08;压测&#xff09;时&#xff0c;是否过滤掉对JavaScript、CSS等静态资源的请求&#xff0c;取决于你测试的目标和目的。 是测试服务端的性能还是前端的性能。这两种目的所涉及到的测试场景和工具等方法是不一样的。 一般的web产品&#xff0c;像cs…

dify:开源 LLMOps平台。

单纯笔记&#xff1a; 一、关于 Dify dify/README_CN.md at main langgenius/dify GitHub Dify 是一款开源的大语言模型&#xff08;LLM&#xff09;应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以…

vite+ts+mock+vue-router+pinia实现vue的路由权限

0.权限管理 前端的权限管理主要分为如下&#xff1a; 接口权限路由权限菜单权限按钮权限 权限是对特定资源的访问许可&#xff0c;所谓权限控制&#xff0c;也就是确保用户只能访问到被分配的资源 1.项目搭建 创建vite项目 yarn create vite配置别名 npm install path -…

不用从头训练,通过知识融合创建强大的统一模型

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大型语言模型&#xff08;LLMs&#xff09;的开发和训练是一个复杂且成本高昂的过程。数据需求是一个主要问题&#xff0c;因为训练这些模型需要大量的标注数据来保证其准确性和泛化能力&#xff1b;计算资源也是一个…