LIBSVM使用介绍
libsvm参数说明

libsvm参数说明简介libsvm是一个支持向量机(Support Vector Machine,SVM)的软件包,由台湾大学林智仁教授等人开发。
它提供了用于二分类和多分类的高效实现,并支持回归和异常检测。
libsvm的主要优势在于其高效的内存使用和计算速度,尤其适用于处理小到中等规模的数据集。
它支持多种核函数,包括线性核、多项式核、高斯核等,可以灵活地适应不同的数据特征。
在使用libsvm进行机器学习任务时,我们需要了解它的参数设置,以便根据具体情况进行调整,以获得更好的性能。
参数说明-s type这个参数用于设置SVM的类型,即用于解决什么类型的问题。
常用的取值有:•0:C-SVC(用于多分类问题)•1:nu-SVC(用于多分类问题)•2:one-class SVM(用于异常检测问题)•3:epsilon-SVR(用于回归问题)•4:nu-SVR(用于回归问题)-t kernel_type这个参数用于设置核函数的类型。
常用的取值有:•0:线性核函数•1:多项式核函数•2:高斯核函数•3:径向基核函数•4:sigmoid核函数-c cost这个参数用于设置惩罚因子(C)的值。
C越大,对误分类的惩罚越重,容错率越低;C越小,对误分类的惩罚越轻,容错率越高。
-g gamma这个参数用于设置高斯核函数和径向基核函数的gamma值。
gamma越大,决策边界越复杂,容易过拟合;gamma越小,决策边界越简单,容易欠拟合。
-p epsilon这个参数用于设置epsilon-SVR中的epsilon值,表示对于回归问题的容错范围。
epsilon越小,容错范围越小,模型越精确;epsilon越大,容错范围越大,模型越宽松。
-n nu这个参数用于设置nu-SVC、one-class SVM和nu-SVR中的nu值,表示支持向量的比例。
nu越大,支持向量的比例越高,模型越复杂;nu越小,支持向量的比例越低,模型越简单。
svm

2 数据缩放
• 简单的数据缩放操作说明。 • svm-scale空格[-l lower]空格[-u upper]空格[-s name1]空格[-r name2]空格filename • [ ]的内容是可以省略的。 • -l:数据下限标记;-u:数据上限标记;如缺省表示范围为[-1,1] • -s name1:表示将缩放的规则保存为文件name1; • -r name2:表示将缩放规则文件name2载入后按此缩放; • filename:待缩放的数据文件
核函数
• 径向基函数(RBF)主要是利用“两个向量夹角越小其内积越 大”的思想。其定义 ,当 u 和 v 比较接近 是(u-v)的模值较小,其核函数值接近1,当 u 和 v 相差很大 时,其核函数值接近0。因其函数类似于高斯分布,故也 称其为高斯核函数。 • 将原问题中内积的运算,换为核函数,则得到svm算法的 规划问题。 • 当然选取不同的核函数得到的结果是不一样的,针对一个 数据集什么样的核函数是最佳的,这也是一个问题。
测试数据1, 模型数据1.model 输出结果1.out
显示准确率,一共270组数据,270组预测正确
• 在训练时我们选用惩罚因子c=2048(svm-train –c 2048 1),此参数 是进行优化选择后推荐的,可以达到100%的准确率。
参数优化选择
• 针对C-SVC,主要待定参数为:
• -g r:核函数中的r参数设置(默认1/ k) • -c c:设置C-SVC的惩罚因子C(默认1)
作为对这种偏离
C-SVC 模型
3.1常用options说明
• -c c:设置C-SVC的惩罚因子C(默认c选1) • -wi weight:设置参数C(weight*C )(默认weight 1)
libsvm参数说明

libsvm参数说明(实用版)目录1.引言2.LIBSVM 简介3.LIBSVM 参数说明4.使用 LIBSVM 需要注意的问题5.结束语正文1.引言支持向量机(Support Vector Machine, SVM)是一种非常强大和灵活的监督学习算法,它可以用于分类和回归任务。
在 SVM 的研究和应用中,LIBSVM 是一个非常重要的工具,它为 SVM 的实现和应用提供了强大的支持。
本文将对 LIBSVM 的参数进行详细的说明,以帮助读者更好地理解和使用这个工具。
2.LIBSVM 简介LIBSVM 是一个开源的 SVM 实现库,它提供了丰富的功能和接口,可以支持多种操作系统,包括 Windows、Linux 和 Mac OS 等。
LIBSVM 主要包括三个部分:svm-train、svm-predict 和 svm-plot。
svm-train 用于训练 SVM 模型,svm-predict 用于预测新数据,svm-plot 用于绘制各种图表,以便于观察和分析模型性能。
3.LIBSVM 参数说明LIBSVM 的参数设置对于模型的性能至关重要。
以下是一些常用的参数及其说明:- -train:用于指定训练数据的文件名。
- -test:用于指定测试数据的文件名。
- -model:用于指定模型文件的名称。
- -参数:用于设置 SVM 模型的参数,例如 C、核函数等。
- -cache-size:用于设置缓存大小,以加速训练过程。
- -tolerance:用于设置收敛阈值,控制训练过程的终止条件。
- -shrinking:用于设置是否使用启发式方法进行训练。
- -probability:用于设置是否计算预测概率。
4.使用 LIBSVM 需要注意的问题在使用 LIBSVM 时,需要注意以下问题:- 设置合适的参数:LIBSVM 的参数设置对模型性能有很大影响,需要根据具体问题和数据集进行调整。
- 特征选择:在实际应用中,特征选择对于模型性能至关重要。
LIBSVM使用方法

LIBSVM1 LIBSVM简介LIBSVM是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的SVM模式识别与回归的软件包,他不但提供了编译好的可在Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross -SVM回归等问题,包括基于一对一算法的多类模式识别问题。
SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
ν-SVM回归和ε-SVM分类、νValidation)的功能。
该软件包可以在.tw/~cjlin/免费获得。
该软件可以解决C-SVM分类、-SVM回归等问题,包括基于一对一算法的多类模式识别问题。
SVM用于模式识别或回归时,SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优。
2 LIBSVM使用方法LibSVM是以源代码和可执行文件两种方式给出的。
如果是Windows系列操作系统,可以直接使用软件包提供的程序,也可以进行修改编译;如果是Unix类系统,必须自己编译,软件包中提供了编译格式文件,我们在SGI工作站(操作系统IRIX6.5)上,使用免费编译器GNU C++3.3编译通过。
2.1 LIBSVM 使用的一般步骤:1) 按照LIBSVM软件包所要求的格式准备数据集;2) 对数据进行简单的缩放操作;3) 考虑选用RBF 核函数;4) 采用交叉验证选择最佳参数C与g;5) 采用最佳参数C与g 对整个训练集进行训练获取支持向量机模型;6) 利用获取的模型进行测试与预测。
libsvm参数说明

libsvm参数说明摘要:一、libsvm 简介- 什么是libsvm- libsvm 的作用二、libsvm 参数说明- 参数分类- 参数详细说明- 核函数参数- 松弛参数- 惩罚参数- 迭代次数参数- 其他参数三、libsvm 参数调整- 参数调整的重要性- 参数调整的方法正文:【libsvm 简介】libsvm 是一款广泛应用于机器学习领域的开源软件,全称是“LIBSVM”,它提供了支持向量机(SVM)的完整实现,可以用于分类和回归等多种任务。
libsvm 不仅支持常见的数据集格式,还提供了丰富的API 接口,方便用户进行二次开发和应用。
libsvm 的主要作用是帮助用户解决高维数据分类和回归问题。
在面对高维数据时,传统的分类算法可能会遇到“维数灾难”,导致分类效果不佳。
而libsvm 通过使用核函数技术,将高维数据映射到低维空间,从而有效地解决了这个问题。
【libsvm 参数说明】libsvm 提供了丰富的参数供用户调整,以达到最佳分类效果。
这些参数主要分为以下几类:1.核函数参数:包括核函数类型(如线性核、多项式核、径向基函数核等)和核函数参数(如径向基函数核的核径宽)。
2.松弛参数:用于控制分类间隔的大小,对最终分类结果有一定影响。
3.惩罚参数:控制模型对误分类的惩罚力度,对分类效果有重要影响。
4.迭代次数参数:控制支持向量机算法的迭代次数,影响模型的收敛速度。
5.其他参数:如学习率、最小化目标函数的迭代次数等。
【libsvm 参数调整】参数调整是libsvm 使用过程中非常重要的一环,合适的参数设置可以使模型达到更好的分类效果。
参数调整的方法主要有以下几种:1.网格搜索法:通过遍历参数空间的各个点,找到最佳参数组合。
这种方法适用于参数空间较小的情况。
2.随机搜索法:在参数空间中随机选取一定数量的点进行遍历,找到最佳参数组合。
这种方法适用于参数空间较大,且网格搜索法效果不佳的情况。
3.贝叶斯优化法:利用贝叶斯理论,对参数进行加权调整,以提高搜索效率。
libsvm使用说明_光环大数据培训机构

libsvm使用说明_光环大数据培训机构libsvm简介LIBSVM 是台湾大学林智仁(Lin Chih-Jen)副教授等开发设计的一个简单、易于使用和快速有效的 SVM 模式识别与回归的软件包,他不但提供了编译好的可在 Windows 系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;该软件还有一个特点,就是对 SVM 所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数就可以解决很多问题;并且提供了交互检验(Cross-SVM回归等问题,包括基于一对一算法的多类模式识别问题。
SVM 用于模式识别或回归时, SVM方法及其参数、核函数及其参数的选择,目前国际上还没有形成一个统一的模式,也就是说最优 SVM 算法参数选择还只能是凭借经验、实验对比、大范围的搜寻或者利用软件包提供的交互检验功能进行寻优的功能。
该软件包可以在.tw/~cjlin/免费获得。
——简介摘录自《LIBSVM使用方法.pdf》libsvm编译安装以Java版为例,下载libsvm-3.20.zip后,从java目录中得到全部源码,其他不以.java结尾的都是无关的文件。
新建Maven项目,或者直接clone我的Maven repository,项目结构如图:数据集获取数据集libsvm-3.20.zip中附带了一个heart_scale数据集,其主页上也提供了很多数据集,我整理了三个作为例子:数据集格式libsvm每行使用的格式如下:<label> <index1>:<value1> <index2>:<value2> …label为类别标号,index为特征序号,value为特征的值value为0时该项可以省略(大规模数据时节省存储空间)比如dataset/iris.scale.txt:1 1:-0.555556 2:0.5 3:-0.694915 4:-0.753 1:-0.166667 2:-0.333333 3:0.38983 4:0.9166672 1:-0.333333 2:-0.75 3:0.0169491 4:-4.03573e-081 1:-0.833333 3:-0.864407 4:-0.9166671 1:-0.611111 2:0.0833333 3:-0.864407 4:-0.9166673 1:0.611111 2:0.333333 3:0.728813 4:13 1:0.222222 3:0.38983 4:0.5833332 1:0.222222 2:-0.333333 3:0.220339 4:0.1666672 1:-0.222222 2:-0.333333 3:0.186441 4:-4.03573e-08…这是(UCI / Iris Plant, 4 features, 3 classes)提供的数据集,一共4个特征,3种类:1. sepal length in cm2. sepal width in cm3. petal length in cm4. petal width in cm5. class:— Iris Setosa— Iris Versicolour— Iris Virginica分别描述了3种鸢尾花。
libsvm参数说明

libsvm参数说明【原创版】目录1.概述2.安装与配置3.参数说明4.应用实例5.总结正文1.概述LIBSVM 是一个开源的支持向量机(SVM)算法库,它可以在多种平台上运行,包括 Windows、Linux 和 Mac OS。
LIBSVM 提供了一系列用于解决分类和回归问题的工具和算法,它的核心是基于序列最小化算法的支持向量机。
2.安装与配置在使用 LIBSVM 之前,需要先安装它。
在 Windows 平台上,可以直接下载LIBSVM 的二进制文件,然后设置环境变量。
对于 Linux 和 Mac OS 平台,需要先安装相应的依赖库,然后编译并安装 LIBSVM。
在安装完成后,需要配置 LIBSVM 的参数,包括选择核函数、设置惩罚参数等。
这些参数对于支持向量机的性能至关重要,需要根据实际问题进行调整。
3.参数说明LIBSVM 的参数主要包括以下几个方面:- 核函数:LIBSVM 支持多种核函数,包括线性核、多项式核、径向基函数(RBF)核和 Sigmoid 核。
核函数的选择取决于问题的性质,需要根据实际问题进行选择。
- 惩罚参数:惩罚参数用于控制模型的复杂度,避免过拟合。
惩罚参数的取值范围是 0 到 1,取值越小,模型的复杂度越高,过拟合的风险也越高。
- 迭代次数:迭代次数用于控制算法的收敛速度,取值越大,收敛速度越快,但可能会影响模型的精度。
- 随机种子:随机种子用于生成随机数,影响模型的初始化和迭代过程。
在实际应用中,建议设置随机种子,以保证模型的可重复性。
4.应用实例LIBSVM 在实际应用中可以用于多种问题,包括分类、回归和排序等。
例如,在人脸检测、车牌识别和文本分类等问题中,可以使用 LIBSVM 来实现支持向量机算法。
5.总结LIBSVM 是一个功能强大的支持向量机库,它提供了多种核函数和参数设置,可以用于解决多种实际问题。
第1页共1页。
LibSVM_快速入门

"./testData/test.1.txt" "train.1_mode.txt" "test1.result.txt“
接口调用:
C, Python, java各有一套接口
Thanks
Q&A
Gnuplot:复制到本地,不需安装 \\192.168.0.135\public\DST\共享资源\工具 \gp426win32 Python: \\192.168.0.135\public\DST\共享资源\工具\pyhton-2.6.2.msi
SVM训练工具svm-train.exe
对所有数据使用同一组参数 量纲相同则不使用该归一化
示例:
>"./libsvm-2.91/windows/svm-scale.exe" -l -1 -u 1 -s "./scale_param.txt" "./trainData/train.1.txt" >"./train.1_scale.txt" >"./libsvm-2.91/windows/svm-scale.exe" -l -1 -u 1 -r "./scale_param.txt" "./testData/test.1.txt" >"./test.1_scale.txt“
LibSVM训练
参数选择:
c, g是SVM训练阶段需要指定的的参数.
这个选择不是人能做on 脚本),可以自动搜索最佳的c,g.
示例: "./libsvm-2.91/tools/grid.py" -svmtrain "E:/分类聚类实践/LibSVM/libsvm2.91/windows/svm-train.exe" -gnuplot "E:/Downloads/gp426win32/gnuplot/bin/pgnuplot.exe" -v 10 "E:/分类聚类实践 /LibSVM/Train.1_scale.txt" 支持:grid.py需要gnuplot 和python支持(available from )
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录1:LIBSVM的简单介绍1. LIBSVM软件包简介LIBSVM是台湾大学林智仁(Chih-Jen Lin)博士等开发设计的一个操作简单、易于使用、快速有效的通用SVM软件包,可以解决分类问题(包括C SVC−、SVCν−)、回归问题(包括SVRε−、SVRν−)以及分布估计(on e class SVM−−)等问题,提供了线性、多项式、径向基和S形函数四种常用的核函数供选择,可以有效地解决多类问题、交叉验证选择参数、对不平衡样本加权、多类问题的概率估计等。
LIBSVM是一个开源的软件包,需要者都可以免费的从作者的个人主页.tw/~cjlin/处获得。
他不仅提供了LIBSVM的C++语言的算法源代码,还提供了Python、Java、R、MA TLAB、Perl、Ruby、LabVIEW 以及C#.net等各种语言的接口,可以方便的在Windows或UNIX平台下使用,也便于科研工作者根据自己的需要进行改进(譬如设计使用符合自己特定问题需要的核函数等)。
另外还提供了WINDOWS平台下的可视化操作工具SVM-toy,并且在进行模型参数选择时可以绘制出交叉验证精度的等高线图。
2. LIBSVM使用方法简介LIBSVM在给出源代码的同时还提供了Windows操作系统下的可执行文件,包括:进行支持向量机训练的svmtrain.exe;根据已获得的支持向量机模型对数据集进行预测的svmpredict.exe;以及对训练数据与测试数据进行简单缩放操作的svmscale.exe。
它们都可以直接在DOS环境中使用。
如果下载的包中只有C++的源代码,则也可以自己在VC等软件上编译生成可执行文件。
LIBSVM使用的一般步骤是:1)按照LIBSVM软件包所要求的格式准备数据集;2)对数据进行简单的缩放操作;3)考虑选用RBF核函数2 (,)x yK x y eγ−−=;4)采用交叉验证选择最佳参数C与γ;5)采用最佳参数C与γ对整个训练集进行训练获取支持向量机模型;6)利用获取的模型进行测试与预测。
一. LIBSVM使用的数据格式LIBSVM使用的训练数据和测试数据文件格式如下:<label> <index1>:<value1> <index2>:< value2> …其中<label> 是训练数据集的目标值,对于分类,它是标识某类的整数(支持多个类);对于回归,是任意实数。
<index> 是以1开始的整数,表示特征的序号;<value>为实数,也就是我们常说的特征值或自变量。
当特征值为0时,特征序号与特征值value都可以同时省略,即index可以是不连续的自然数。
<label>与第一个特征序号、前一个特征值与后一个特征序号之间用空格隔开。
测试数据文件中的label只用于计算准确度或误差,如果它是未知的,只需用任意一个数填写这一栏,也可以空着不填。
例如:+1 1:0.708 2:1 3:1 4:-0.320 5:-0.105 6:-1 8:1.21为了使用的方便,可以编写小程序,将自己常用的数据格式按照这种数据格式要求转换成这种格式供LIBSVM直接使用。
例如:笔者编写的在MA TLAB中使用的格式转换函数write4libsvm如下:function write4libsvm% 为了使得数据满足libsvm的格式要求而进行的数据格式转换% 原始数据保存格式为:% [标签第一个属性值第二个属性值...]% 转换后文件格式为满足libsvm的格式要求,即:% [标签 1:第一个属性值 2:第二个属性值 3:第三个属性值 ...]% JGRong@ustc% 2004.6.16[filename, pathname] = uigetfile( {'*.mat', ...'数据文件(*.mat)'; '*.*', '所有文件 (*.*)'}, '选择数据文件');tryS=load([pathname filename]);fieldName = fieldnames(S);str = cell2mat(fieldName);B = getfield(S,str);[m,n] = size(B);[filename, pathname] = uiputfile({'*.txt;*.dat' ,'数据文件(*.txt;*.dat)';'*.*','所有文件 (*.*)'},'保存数据文件');fid = fopen([pathname filename],'w');if(fid~=-1)for k=1:mfprintf(fid,'%3d',B(k,1));for kk = 2:nfprintf(fid,'\t%d',(kk-1));fprintf(fid,':');fprintf(fid,'%d',B(k,kk));endfprintf(fid,'\n');endfclose(fid);elsemsgbox('无法保存文件!');endcatchmsgbox('文件保存过程中出错!','出错了...','error');end二. svmscale的用法对数据集进行缩放的目的在于:1)避免一些特征值范围过大而另一些特征值范围过小;2)避免在训练时为了计算核函数而计算内积的时候引起数值计算−或者是[0,1]之间。
的困难。
因此,通常将数据缩放到[1,1]用法:svmscale [-l lower] [-u upper] [-y y_lower y_upper][-s save_filename] [-r restore_filename] filename (缺省值:lower = -1,upper = 1,没有对y进行缩放)其中,-l:数据下限标记;lower:缩放后数据下限;-u:数据上限标记;upper:缩放后数据上限;-y:是否对目标值同时进行缩放;y_lower为下限值,y_upper为上限值;-s save_filename:表示将缩放的规则保存为文件save_filename;-r restore_filename:表示将缩放规则文件restore_filename载入后按此缩放;filename:待缩放的数据文件(要求满足前面所述的格式)。
缩放规则文件可以用文本浏览器打开,看到其格式为:lower upper<index1> lval1 uval1<index2> lval2 uval2其中的lower 与upper 与使用时所设置的lower 与upper 含义相同;index 表示特征序号;lval 为该特征对应转换后下限lower 的特征值;uval 为对应于转换后上限upper 的特征值。
数据集的缩放结果在此情况下通过DOS 窗口输出,当然也可以通过DOS 的文件重定向符号“>”将结果另存为指定的文件。
使用实例:1) svmscale –s train3.range train3>train3.scale表示采用缺省值(即对属性值缩放到[1,1]−的范围,对目标值不进行缩放)对数据集train3进行缩放操作,其结果缩放规则文件保存为train3.range ,缩放集的缩放结果保存为train3.scale 。
2) svmscale –r train3.range test3>test3.scale表示载入缩放规则train3.range 后按照其上下限对应的特征值和上下限值线性的地对数据集test3进行缩放,结果保存为test3.scale 。
三. svmtrain 的用法svmtrain 实现对训练数据集的训练,获得SVM 模型。
用法: svmtrain [options] training_set_file [model_file]其中,options (操作参数):可用的选项即表示的涵义如下所示 -s svm 类型:设置SVM 类型,默认值为0,可选类型有:0 -- C SVC −1 -- SVC ν−2 -- on e class SVM −−3 -- SVR ε−4 -- SVR ν−-t 核函数类型:设置核函数类型,默认值为2,可选类型有:0 -- 线性核:'*u v1 -- 多项式核:deg (*'*0)ree u v coef γ+ 2 -- RBF 核:2()u v e γ−3 -- sigmoid 核:tanh(*'*0)u v coef γ+-d degree :核函数中的degree 设置,默认值为3;-g γ:设置核函数中的γ,默认值为1/k ;-r 0coef :设置核函数中的0coef ,默认值为0;-c cos t :设置C SVC −、SVR ε−、SVR ν−中从惩罚系数C ,默认值为1; -n ν:设置SVC ν−、on e class SVM −−与SVR ν− 中参数ν,默认值0.5; -p ε:设置SVR ν−的损失函数中的ε,默认值为0.1;-m cachesize :设置cache 内存大小,以MB 为单位,默认值为40;-e ε:设置终止准则中的可容忍偏差,默认值为0.001;-h shrinking :是否使用启发式,可选值为0或1,默认值为1;-b 概率估计:是否计算SVC 或SVR 的概率估计,可选值0或1,默认0; -wi weight :对各类样本的惩罚系数C 加权,默认值为1;-v n :n 折交叉验证模式。
其中-g 选项中的k 是指输入数据中的属性数。
操作参数 -v 随机地将数据剖分为n 部分并计算交叉检验准确度和均方根误差。
以上这些参数设置可以按照SVM 的类型和核函数所支持的参数进行任意组合,如果设置的参数在函数或SVM 类型中没有也不会产生影响,程序不会接受该参数;如果应有的参数设置不正确,参数将采用默认值。
training_set_file 是要进行训练的数据集;model_file 是训练结束后产生的模型文件,该参数如果不设置将采用默认的文件名,也可以设置成自己惯用的文件名。
使用实例:1)svmtrain train3.scale train3.model训练train3.scale ,将模型保存于文件train3.model ,并在dos 窗口中输出如下结果:optimization finished, #iter = 1756nu = 0.464223obj = -551.002342, rho = -0.337784nSV = 604, nBSV = 557Total nSV = 604其中,#iter 为迭代次数,nu 与前面的操作参数-n ν相同,obj 为SVM 文件转换为的二次规划求解得到的最小值,rho 为判决函数的常数项b ,nSV 为支持向量个数,nBSV 为边界上的支持向量个数,Total nSV 为支持向量总个数。