支持向量机(SVM)的原理推导及解释
文章目录
- 支持向量机(SVM)的原理推导及解释
- 1.线性可分支持向量机(linear support vector machine in linearly separable case)
- 2.线性支持向量机(linear support vector machine)
- 3.非线性支持向量机(non-linear support vector machine)
支持向量机(SVM)的原理推导及解释
支持向量机的本质:选出最优的分类超平面(标准:离超平面最近距离的样本点最远的超平面)。
假定超平面方程WTx+b=0\mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b}=0WTx+b=0,则样本数据点x到该超平面的距离表示为:∣WTx+b∣|\mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b}|∣WTx+b∣。而判断WTx+b\mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b}WTx+b与标记y符号是否一致得到分类结果:一致,分类正确;否则,分类错误。
于是,我们采用y(WTx+b)\mathbf{y}\left( \mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b} \right)y(WTx+b)替代∣WTx+b∣|\mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b}|∣WTx+b∣表示样本点到超平面的距离。【当然,这里会有读者思考,如果分类错误,则y(WTx+b)\mathbf{y}\left( \mathbf{W}^{\mathbf{T}}\mathbf{x}+\mathbf{b} \right)y(WTx+b)为负值,没错,我们假定所有的分类标签都是正确的->找到最优的超平面。】
函数距离di=yi(wTxi+b)\mathbf{d}_{\mathbf{i}}=\mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right)di=yi(wTxi+b) (i为第i个样本点),而样本总数据集D的函数间隔d定义为D中所有样本数据点到超平面的最小函数间隔值,d=mindi\mathbf{d}=\min \mathbf{d}_{\mathbf{i}}d=mindi。
但是,函数间隔也存在明显的缺点:若同比例缩放其参数向量w和偏置量b,会改变间隔di的取值。s∗wTx+s∗b=0\mathbf{s}*\mathbf{w}^{\mathbf{T}}\mathbf{x}+\mathbf{s}*\mathbf{b}=0s∗wTx+s∗b=0,di=s∗yi(wTxi+b)\mathbf{d}_{\mathbf{i}}=\mathbf{s}*\mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right)di=s∗yi(wTxi+b),超平面的方向由w决定,位置由w、x和b决定,这里超平面的方向位置不变,但是di却发生了变化。于是,我们引入了几何间隔:
di_g=yi(wTxi+b)∣∣w∣∣=di∣∣w∣∣\mathbf{d}_{\mathbf{i}\_g}=\frac{\mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right)}{||\mathbf{w}||}=\frac{\mathbf{d}_{\mathbf{i}}}{||\mathbf{w}||}di_g=∣∣w∣∣yi(wTxi+b)=∣∣w∣∣di
1.线性可分支持向量机(linear support vector machine in linearly separable case)
核心:硬间隔最大化(hard margin maximization)
数据对象:线性可分数据
要求:必须所有的正例和负例分类标签正确(超平面受边界数据影响大)
寻找参数w和b,使得D中所有样本数据点到超平面的最小函数间隔值d最大(这里设定d=1)。
求解问题如下:maxw,b1∣∣w∣∣s.t.yi(wTxi+b)⩾1,i=1,2....n转换为:minw,b12∣∣w∣∣2s.t.yi(wTxi+b)−1⩾0,i=1,2....n\text{求解问题如下:} \\ \underset{\mathbf{w},\mathbf{b}}{\max}\frac{1}{||\mathbf{w}||}\,\, \\ \mathbf{s}.\mathbf{t}. \mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right) \geqslant 1,\mathbf{i}=1,2....\mathbf{n} \\ \text{转换}为\text{:} \\ \underset{\mathbf{w},\mathbf{b}}{\min}\frac{1}{2}||\mathbf{w}||^2\,\, \\ \mathbf{s}.\mathbf{t}. \mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right) -1\geqslant 0,\mathbf{i}=1,2....\mathbf{n} 求解问题如下:w,bmax∣∣w∣∣1s.t.yi(wTxi+b)⩾1,i=1,2....n转换为:w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)−1⩾0,i=1,2....n
对于约束优化问题:minf(x)s.t.gj(x)⩽0,j=1,2,...,m若f(x)和gj(x)都为凸函数,则此问题为凸规划。\text{对于约束优化问题:} \\ \min \mathbf{f}\left( \mathbf{x} \right) \\ \mathbf{s}.\mathbf{t}. \mathbf{g}_{\mathbf{j}}\left( \mathbf{x} \right) \leqslant 0,\mathbf{j}=1,2,...,\mathbf{m} \\ \text{若}\mathbf{f}\left( \mathbf{x} \right) \text{和}\mathbf{g}_{\mathbf{j}}\left( \mathbf{x} \right) \text{都}为\text{凸函数,则此问题}为\text{凸规划。} 对于约束优化问题:minf(x)s.t.gj(x)⩽0,j=1,2,...,m若f(x)和gj(x)都为凸函数,则此问题为凸规划。
凸规划的性质:1.若给定一点x0,则集合R={x∣f(x)⩽f(x0)}为凸集。2.可行域R={x∣gj(x)⩽0,j=1,2,...,m}为凸集合。3.凸规划的任何局部最优解就是全局最优解。\text{凸规划的性质:} \\ 1.\text{若给定一点}\mathbf{x}_0\text{,则集合}\mathbf{R}=\left\{ \mathbf{x}|\mathbf{f}\left( \mathbf{x} \right) \leqslant \mathbf{f}\left( \mathbf{x}_0 \right) \right\} 为\text{凸集。} \\ 2.\text{可行域}\mathbf{R}=\left\{ \mathbf{x}|\mathbf{g}_{\mathbf{j}}\left( \mathbf{x} \right) \leqslant 0,\mathbf{j}=1,2,...,\mathbf{m} \right\} 为\text{凸集合。} \\ 3.\text{凸规划的任何}局\text{部最优解就}是\text{全}局\text{最优解。} 凸规划的性质:1.若给定一点x0,则集合R={x∣f(x)⩽f(x0)}为凸集。2.可行域R={x∣gj(x)⩽0,j=1,2,...,m}为凸集合。3.凸规划的任何局部最优解就是全局最优解。
硬间隔最大化(HMM)学习算法流程:
输入:线性可分训练数据集T={(x1,y1),(x2,y2),...,(xn,yn)},其中xϵXϵRn,yϵYϵ{1,−1}\mathbf{T}=\left\{ \left( \mathbf{x}_1,\mathbf{y}_1 \right) ,\left( \mathbf{x}_2,\mathbf{y}_2 \right) ,...,\left( \mathbf{x}_{\mathbf{n}},\mathbf{y}_{\mathbf{n}} \right) \right\} \text{,其中}\mathbf{x\epsilon X\epsilon R}^{\mathbf{n}},\mathbf{y\epsilon Y\epsilon }\left\{ 1,-1 \right\} T={(x1,y1),(x2,y2),...,(xn,yn)},其中xϵXϵRn,yϵYϵ{1,−1}
输出:最大间隔分离超平面和分类决策函数
构造并求解约束最优化问题,求得w*和b*:
minw,b12∣∣w∣∣2s.t.yi(wTxi+b)−1⩾0,i=1,2....n\underset{\mathbf{w},\mathbf{b}}{\min}\frac{1}{2}||\mathbf{w}||^2\,\, \\ \mathbf{s}.\mathbf{t}. \mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right) -1\geqslant 0,\mathbf{i}=1,2....\mathbf{n} w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)−1⩾0,i=1,2....n得到分离超平面:
W∗T+b∗=0\mathbf{W}^{*\mathbf{T}}+\mathbf{b}^*=0 W∗T+b∗=0分类决策函数:
f(xi)=sgn(W∗Txi+b∗)\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) =sgn \left( \mathbf{W}^{*\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b}^* \right) f(xi)=sgn(W∗Txi+b∗)
使用拉格朗日乘子法求解凸规划:
引入拉格朗日乘子αi≥0得到拉格朗日函数:
L(w,b,α)=12∣∣w∣∣2−∑i=1mαi(yi(wTxi+b)−1)\mathbf{L}\left( \mathbf{w},\mathbf{b},\mathbf{\alpha } \right) =\frac{1}{2}||\mathbf{w}||^2-\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}\left( \mathbf{y}_{\mathbf{i}}\left( \mathbf{w}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b} \right) -1 \right)} L(w,b,α)=21∣∣w∣∣2−i=1∑mαi(yi(wTxi+b)−1)上式可以转换为(因为gj(x)⩾0\mathbf{g}_{\mathbf{j}}\left( \mathbf{x} \right) \geqslant 0gj(x)⩾0,所以是,所以是,所以是maxαi⩾0\underset{\mathbf{\alpha }_{\mathbf{i}}\geqslant 0}{\max}αi⩾0max):
minw,bθ(w)=minw,bmaxαi⩾0L(w,b,α)\underset{\mathbf{w},\mathbf{b}}{\min}\mathbf{\theta }\left( \mathbf{w} \right) =\underset{\mathbf{w},\mathbf{b}}{\min}\underset{\mathbf{\alpha }_{\mathbf{i}}\geqslant 0}{\max}\mathbf{L}\left( \mathbf{w},\mathbf{b},\mathbf{\alpha } \right) w,bminθ(w)=w,bminαi⩾0maxL(w,b,α)满足以下KTT条件时,上式等价于maxαi⩾0minw,bL(w,b,α)\underset{\mathbf{\alpha }_{\mathbf{i}}\geqslant 0}{\max}\underset{\mathbf{w},\mathbf{b}}{\min}\mathbf{L}\left( \mathbf{w},\mathbf{b},\mathbf{\alpha } \right)αi⩾0maxw,bminL(w,b,α):
{αi⩾0,yif(xi)⩾1,αi(yif(xi)−1)=0\left\{ \begin{array}{c} \mathbf{\alpha }_{\mathbf{i}}\geqslant 0\text{,}\\ \mathbf{y}_{\mathbf{i}}\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) \geqslant 1,\\ \mathbf{\alpha }_{\mathbf{i}}\left( \mathbf{y}_{\mathbf{i}}\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) -1 \right) =0\\ \end{array} \right. ⎩⎨⎧αi⩾0,yif(xi)⩾1,αi(yif(xi)−1)=0令L(w,b,α)对w和b的偏导为零可得:
w=∑i=1mαiyixi,∑i=1mαiyi=0\mathbf{w}=\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}\mathbf{y}_{\mathbf{i}}\mathbf{x}_{\mathbf{i}}\text{,}}\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}\mathbf{y}_{\mathbf{i}}=0} w=i=1∑mαiyixi,i=1∑mαiyi=0代回原式,进一步简化目标函数,转化为优化αi\mathbf{\alpha }_{\mathbf{i}}αi,总共m个αi\mathbf{\alpha }_{\mathbf{i}}αi:
minα12∑i=1m∑j=1mαiαjyiyjxiTxj−∑i=1mαis.t.∑i=1mαiyi=0,αi⩾0,i=1,2,...,m\underset{\mathbf{\alpha }}{\min}\frac{1}{2}\sum_{\mathbf{i}=1}^{\mathbf{m}}{\sum_{\mathbf{j}=1}^{\mathbf{m}}{\begin{array}{c} \mathbf{\alpha }_{\mathbf{i}}\mathbf{\alpha }_{\mathbf{j}}\mathbf{y}_{\mathbf{i}}\mathbf{y}_{\mathbf{j}}\mathbf{x}_{\mathbf{i}}^{\mathbf{T}}\mathbf{x}_{\mathbf{j}}-\sum_{\mathbf{i}=1}^{\mathbf{m}}{\begin{array}{c} \begin{array}{c} \mathbf{\alpha }_{\mathbf{i}}\\ \end{array}\\ \end{array}}\\ \end{array}}} \\ \mathbf{s}.\mathbf{t}.\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}\mathbf{y}_{\mathbf{i}}=0},\mathbf{\alpha }_{\mathbf{i}}\geqslant 0,\mathbf{i}=1,2,...,\mathbf{m} αmin21i=1∑mj=1∑mαiαjyiyjxiTxj−∑i=1mαis.t.i=1∑mαiyi=0,αi⩾0,i=1,2,...,m使用序列最小化算法SMO求解,假定已经得到最优化参数向量α∗\mathbf{\alpha }^*α∗,则:
w∗=∑i=1mαi∗yixi\mathbf{w}^*=\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}^{*}\mathbf{y}_{\mathbf{i}}\mathbf{x}_{\mathbf{i}}\,\, } w∗=i=1∑mαi∗yixi
而由WTxi+bi=yi\mathbf{W}^{\mathbf{T}}\mathbf{x}_{\mathbf{i}}+\mathbf{b}_{\mathbf{i}}=\mathbf{y}_{\mathbf{i}}WTxi+bi=yi得:
bj∗=yj−∑i=1mαi∗yixiTxj,且αj≠0\mathbf{b}_{\mathbf{j}}^{*}=\mathbf{y}_{\mathbf{j}}-\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}^{*}\mathbf{y}_{\mathbf{i}}\mathbf{x}_{\mathbf{i}}^{\mathbf{T}}\mathbf{x}_{\mathbf{j}},}\text{且}\mathbf{\alpha }_{\mathbf{j}}\ne 0 bj∗=yj−i=1∑mαi∗yixiTxj,且αj=0最终的分类决策函数:
f(xj)=sgn(∑i=1mαi∗yixiTxj+b∗)\mathbf{f}\left( \mathbf{x}_{\mathbf{j}} \right) =sgn \left( \sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}^{*}\mathbf{y}_{\mathbf{i}}\mathbf{x}_{\mathbf{i}}^{\mathbf{T}}\mathbf{x}_{\mathbf{j}}}+\mathbf{b}^* \right) f(xj)=sgn(i=1∑mαi∗yixiTxj+b∗)分析KKT条件的yif(xi)⩾1\mathbf{y}_{\mathbf{i}}\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) \geqslant 1yif(xi)⩾1和αi(yif(xi)−1)=0\mathbf{\alpha }_{\mathbf{i}}\left( \mathbf{y}_{\mathbf{i}}\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) -1 \right) =0αi(yif(xi)−1)=0:
whenyif(xi)>1⟹αi=0\mathbf{when}\,\,\mathbf{y}_{\mathbf{i}}\mathbf{f}\left( \mathbf{x}_{\mathbf{i}} \right) >1\Longrightarrow \mathbf{\alpha }_{\mathbf{i}}=0 whenyif(xi)>1⟹αi=0
即:支持向量机具有稀疏性,训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
然后使用SMO算法求解优化参数αi,iϵ{1,2,...,m}\mathbf{\alpha }_{\mathbf{i}},\mathbf{i\epsilon }\left\{ 1,2,...,\mathbf{m} \right\}αi,iϵ{1,2,...,m}:
第一步:选取一对αi\mathbf{\alpha }_{\mathbf{i}}αi和和和αj\mathbf{\alpha }_{\mathbf{j}}αj进行更新。
第二步:固定αi\mathbf{\alpha }_{\mathbf{i}}αi和和和αj\mathbf{\alpha }_{\mathbf{j}}αj以外的参数,仅考虑αi\mathbf{\alpha }_{\mathbf{i}}αi和和和αj\mathbf{\alpha }_{\mathbf{j}}αj求解对偶问题,则对偶问题的约束变为:
∑i=1mαiyi=0变 为→αiyi+αjyj=−∑k≠i,jmαkyk,αi⩾0,αj⩾0\sum_{\mathbf{i}=1}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{i}}\mathbf{y}_{\mathbf{i}}=0}\underrightarrow{\text{ 变 } 为 } \mathbf{\alpha }_{\mathbf{i}}\mathbf{y}_{\mathbf{i}}+\mathbf{\alpha }_{\mathbf{j}}\mathbf{y}_{\mathbf{j}}=-\sum_{\mathbf{k}\ne \mathbf{i},\mathbf{j}}^{\mathbf{m}}{\mathbf{\alpha }_{\mathbf{k}}\mathbf{y}_{\mathbf{k}}\text{,}}\mathbf{\alpha }_{\mathbf{i}}\geqslant 0,\mathbf{\alpha }_{\mathbf{j}}\geqslant 0 i=1∑mαiyi=0 变 为αiyi+αjyj=−k=i,j∑mαkyk,αi⩾0,αj⩾0
第三步:通过第二步得出的αi\mathbf{\alpha }_{\mathbf{i}}αi和αj\mathbf{\alpha }_{\mathbf{j}}αj的等式关系,选取保留其中一者,例如αi\mathbf{\alpha }_{\mathbf{i}}αi=g(=g(=g(αj\mathbf{\alpha }_{\mathbf{j}}αj)代入目标函数:
minα12∑i=1m∑j=1mαig(αj)yiyjxiTxj−∑i=1mαis.t.αi⩾0,i=1,2,...,m\underset{\mathbf{\alpha }}{\min}\frac{1}{2}\sum_{\mathbf{i}=1}^{\mathbf{m}}{\sum_{\mathbf{j}=1}^{\mathbf{m}}{\begin{array}{c} \mathbf{\alpha }_{\mathbf{i}}\mathbf{g}\left( \mathbf{\alpha }_{\mathbf{j}} \right) \mathbf{y}_{\mathbf{i}}\mathbf{y}_{\mathbf{j}}\mathbf{x}_{\mathbf{i}}^{\mathbf{T}}\mathbf{x}_{\mathbf{j}}-\sum_{\mathbf{i}=1}^{\mathbf{m}}{\begin{array}{c} \begin{array}{c} \mathbf{\alpha }_{\mathbf{i}}\\ \end{array}\\ \end{array}}\\ \end{array}}} \\ \mathbf{s}.\mathbf{t}.\mathbf{\alpha }_{\mathbf{i}}\geqslant 0,\mathbf{i}=1,2,...,\mathbf{m} αmin21i=1∑mj=1∑mαig(αj)yiyjxiTxj−∑i=1mαis.t.αi⩾0,i=1,2,...,m
第四步:针对上式再次求解该目标函数的凸优化问题,得到αi\mathbf{\alpha }_{\mathbf{i}}αi和αj\mathbf{\alpha }_{\mathbf{j}}αj的更新值, 然后求解出w * 和 b *。
例题:
- 给定正例x1=(3,3),x2=(4,3),负例x3=(1,1),计算支 持向量、分类决策函数和分类超平面方程。
2.线性支持向量机(linear support vector machine)
- 核心:软间隔最大化(soft margin maximization)
- 数据对象:近似线性可分数据(大部分数据线性可分,有些不可分
训练数据中有一些特异点(outlier),不能满足函数间隔大于等于1的约束条件,引入一个松弛变量
支持向量机(SVM)的原理推导及解释相关推荐
- 支持向量机SVM算法原理及应用(R)
支持向量机SVM算法原理及应用(R) 2016年08月17日 16:37:25 阅读数:22292更多 个人分类: 数据挖掘实战应用 版权声明:本文为博主原创文章,转载请注明来源. https://b ...
- EM算法的原理推导及解释
文章目录 EM算法的原理推导及解释 前置知识:极大似然估计(Maximum Likelihood) 核心部分:期望最大化算法(Expectation Maximum) 实例:EM求解"三硬币 ...
- Adaboost算法的原理推导及解释
文章目录 Adaboost算法的原理推导及解释 前置知识:Boosting概述 Boosting方法的基本思想 Boosting方法的的学习方法 核心部分:Adaboost算法的原理推导和解释 Ada ...
- 支持向量机SVM详细原理,Libsvm工具箱详解,svm参数说明,svm应用实例,神经网络1000案例之15
目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的股票价格预测 支持向量机SVM的详细原理 SVM的定义 ...
- 支持向量机SVM算法原理笔记2
上篇博客介绍了当样本集是线性可分情况下的SVM算法原理.接下来介绍不存在一个划分超平面可以正确分类的问题,比如说"异或问题". 对于此类问题,可以将样本空间映射到更高维度空间,这样 ...
- 支持向量机 (SVM)分类器原理分析与基本应用
转自:穆晨 阅读目录 前言 预备术语 算法原理 如何计算最优超平面 使用SMO - 高效优化算法求解 α 值 非线性可分情况的大致解决思路 小结 回到顶部 前言 支持向量机,也即SVM,号称分类算法, ...
- 支持向量机SVM算法原理
SVM 的英文叫 Support Vector Machine,中文名为支持向量机.它是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型. 什么是有监督的学习模型呢?它指的是我们需要事先对 ...
- 支持向量机SVM算法原理笔记1
最近在学习李航编写的<统计学习方法>一书,看到SVM这一章时遇到了一些困难,在翻阅很多资料之后对其有了一定的理解,所以打算写篇博客来记录一下,后面如果有时间也会把前面几章中的算法加以整理. ...
- 【算法原理】支持向量机SVM算法原理
- python支持向量机SVM (sklearn)
python支持向量机SVM (sklearn) 文章目录 python支持向量机SVM (sklearn) 原理概述 代码 导入库 生成数据集 核心代码 线性不可分的情况 核函数 重要参数C(软间隔 ...
最新文章
- JS document
- 2020 前端开源领域技术展望
- SAP Spartacus master branch for 4.0 无法使用 yarn build
- Web前端基础---CSS样式--盒子模型--浮动与定位
- python中isort的使用
- Linux各发行版本 优缺点 简介
- SAP License:AM-资产冻结与停用
- DSP之有限字长效应
- c# 读取写入excel单元格(包括对excel的一些基本操作)
- 人性的弱点【我要喜欢你】
- 临平职高计算机分数线,权威发布!余杭区2017年各类高中招生第一批次录取分数线划定!...
- d2crub学习2 算合计
- 光流与Lucas-Kanade 光流法
- 在java中使用RBL服务器(中国反垃圾邮件联盟的CBL+使用)
- 2年乘坐南航2次,却攒了48000里程,我是怎样做到的?(2)
- 2019-CSP赛后总结
- android表格可以编辑,手机wps中如何编辑表格
- Matlab代码:计及三方市场主体接入的园区综合能源系统能量管理
- python中print无法打印在控制台输出_Pycharm Python控制台不打印输出
- 基于HTML5+PHP+MySQL的毕业设计选题管理系统