Felomeng翻译:libsvm2.88之中文文档完全翻译版(单文档)

本文介绍了一个高效的支持向量机工具包libsvm,该工具包提供C-SVM分类功能,并附带模型自动选择工具。文章还介绍了如何使用libsvm进行交叉验证以及获取分类模型的标签。
<p>本译文还有<a href="http://download.youkuaiyun.com/source/1190636">word(.doc)版</a>和<a href="http://blog.youkuaiyun.com/Felomeng/archive/2009/04/09/4058711.aspx">在线版</a>。</p>

<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">支持向量机工具包(</span><span style=""><span style="font-family: Times New Roman;">libsvm</span></span><span style="">)是简单、高效、易用的支持向量机(</span><span style=""><span style="font-family: Times New Roman;">SVM</span></span><span style="">)分类与回归软件。它可以解决</span><span style=""><span style="font-family: Times New Roman;">C-SVM</span></span><span style="">分类,工具包还为</span><span style=""><span style="font-family: Times New Roman;">C-SVM</span></span><span style="">分类提供了模型自动选择工具。本文档将介绍支持向量机工具包的用法。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">支持向量机工具包可以从</span><span style=""><a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm"><span style="font-family: Times New Roman;">http://www.csie.ntu.edu.tw/~cjlin/libsvm</span></a></span><span style="">下载。在使用支持向量机工具包之前请先阅读文件</span><span style=""><span style="font-family: Times New Roman;">COPYRIGHT</span></span><span style="">(版权协议)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoTitle" style="margin: 12pt 0cm 3pt;"><span style=""><strong><span style="font-size: large;">目录</span></strong></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">快速入门</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">安装和数据格式</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">“<span style='font-family: "Times New Roman","serif";'>svm-train</span>”的使用</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">“<span style='font-family: "Times New Roman","serif";'>svm-predict</span>”的使用</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">“<span style='font-family: "Times New Roman","serif";'>svm-scale</span>”的使用</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">实际使用中的技巧</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">示例</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">预先计算好的内核</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">函数库的使用</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;"><span style="font-family: Times New Roman;">Java</span><span style="">版本</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">生成<span style='font-family: "Times New Roman","serif";'>windows</span>下的二进制文件(二进行文件就是通常所说的exe文件,即可执行文件)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">附加工具:子取样器,参数选择器,数据格式较验器等</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;"><span style="font-family: Times New Roman;">Python</span><span style="">接口</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">附录</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8"></a><span style="">快速入门</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">===========</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">如果你没有接触过支持向量机,且要处理的数据量并不大,那么请在安装完成之后使用“</span><span style=""><span style="font-family: Times New Roman;">tools</span></span><span style="">”文件夹下的</span><span style=""><span style="font-family: Times New Roman;">easy.py</span></span><span style="">。它可以自动完成从数据数值化到参数选择的一切工作。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">语法:</span><span style=""><span style="font-family: Times New Roman;">easy.py </span></span><span style="">训练文件</span><span style=""><span style="font-family: Times New Roman;">[</span></span><span style="">测试文件</span><span style=""><span style="font-family: Times New Roman;">]</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">更多关于参数选择的信息见文件“</span><span style=""><span style="font-family: Times New Roman;">tools/README</span></span><span style="">”。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E5%AE%89%E8%A3%85%E5%92%8C%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F"></a><span style="">安装和数据格式</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">============================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">在</span><span style=""><span style="font-family: Times New Roman;">Unix</span></span><span style="">系统中,键入“</span><span style=""><span style="font-family: Times New Roman;">make</span></span><span style="">”来生成“</span><span style=""><span style="font-family: Times New Roman;">svm-train</span></span><span style="">”和“</span><span style=""><span style="font-family: Times New Roman;">svm-predict</span></span><span style="">”程序。不带参数运行它们,可以查看它们的语法。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">在其它的操作系统中,请参考“</span><span style=""><span style="font-family: Times New Roman;">Makefile</span></span><span style="">”文件来生成它们(例如,查看本文档中的“生成</span><span style=""><span style="font-family: Times New Roman;">Windows</span></span><span style="">二进制文件”,或者直接使用已经生成的二进制文件(</span><span style=""><span style="font-family: Times New Roman;">Windows</span></span><span style="">二进制文件在文件夹“</span><span style=""><span style="font-family: Times New Roman;">windows</span></span><span style="">”中)。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">训练与测试数据文件的格式如下所示</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;"><label> <index1>:<value1> <index2>:<value2>…</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">.</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">. </span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">每行包含一个实例,并且以字符</span><span style=""><span style="font-family: Times New Roman;">’\n’</span></span><span style="">结束。对于分类来讲,</span><span style=""><span style="font-family: Times New Roman;"><label></span></span><span style="">是整型数据,表示类别(支持多分类)。对于回归来讲,</span><span style=""><span style="font-family: Times New Roman;"><label></span></span><span style="">是任意实数(浮点数),表示目标值。</span><span style=""><span style="font-family: Times New Roman;">one-class SVM</span></span><span style="">并不使用这个参数,所以使用什么数值都可以。除非使用预计算好的内核(稍候章节介绍),否则</span><span style=""><span style="font-family: Times New Roman;"><index>:<value></span></span><span style="">是描述属性值的。</span><span style=""><span style="font-family: Times New Roman;"><index></span></span><span style="">(索引)是从</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">开始的整型数据,而</span><span style=""><span style="font-family: Times New Roman;"><value></span></span><span style="">(值)是实数(浮点型)。索引必须升序排列。在测试文件中的标签只是用于计算精确度或错误率。如果它们是未知的,那么只要将第一列赋任意数值。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">本包含有一个用于分类的示例数据文件,文件名是“</span><span style=""><span style="font-family: Times New Roman;">heart_scale</span></span><span style="">”。要验证你的数据格式的正确性,请使用“</span><span style=""><span style="font-family: Times New Roman;">tools/checkdata.py</span></span><span style="">”工具(详见文件“</span><span style=""><span style="font-family: Times New Roman;">tools/README</span></span><span style="">”)。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">键入“</span><span style=""><span style="font-family: Times New Roman;">svm-train heart_scale</span></span><span style="">”,程序会读读入训练数据并生成模型文件“</span><span style=""><span style="font-family: Times New Roman;">heart_scale.model</span></span><span style="">”。假设你有一个名为“</span><span style=""><span style="font-family: Times New Roman;">heart_scale.t</span></span><span style="">”的测试集,那么键入“</span><span style=""><span style="font-family: Times New Roman;">svm-predict heart_scale.t heart_scale.model output</span></span><span style="">”以测试预测精确度。文件“</span><span style=""><span style="font-family: Times New Roman;">output</span></span><span style="">”中含有预测的分类标签。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">本包中还有一些别的实用程序:</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">svm-scale:</span><span lang="EN-US"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">将输入数据数值化的工具。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">svm-toy:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">简单的图形界面工具,它可以展示支持向量机怎样在二维空间(即平面)上将数据分类。你可以在该窗口上面单击以绘制数据点。使用“</span><span style=""><span style="font-family: Times New Roman;">change</span></span><span style="">”按钮来选择类别</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">,</span><span style=""><span style="font-family: Times New Roman;">2</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">3</span></span><span style="">(也就是说,最多支持三类),按“</span><span style=""><span style="font-family: Times New Roman;">load</span></span><span style="">”按钮可以从文件载入数据,按“</span><span style=""><span style="font-family: Times New Roman;">save</span></span><span style="">”按钮可以将数据保存到文件,按“</span><span style=""><span style="font-family: Times New Roman;">run</span></span><span style="">”按钮可以获得一个</span><span style=""><span style="font-family: Times New Roman;">SVM</span></span><span style="">模型(根据绘制的点集或从文件载入的数据),按“</span><span style=""><span style="font-family: Times New Roman;">clear</span></span><span style="">”按钮可以清屏。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">在该窗口的底部文本框内,你可以输入参数,参数的句法和“</span><span style=""><span style="font-family: Times New Roman;">svm-train</span></span><span style="">”一样。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">注意:“</span><span style=""><span style="font-family: Times New Roman;">load</span></span><span style="">”和“</span><span style=""><span style="font-family: Times New Roman;">save</span></span><span style="">”只考虑数据分类而不考虑回归的情况。每个数据点拥有一个标签(颜色,必须是</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">,</span><span style=""><span style="font-family: Times New Roman;">2</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">3</span></span><span style="">)和两个属性(横坐标和纵座标),取值区间</span><span style=""><span style="font-family: Times New Roman;">[0,1]</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">在相应目录键入“</span><span style=""><span style="font-family: Times New Roman;">make</span></span><span style="">”来生成这些程序。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">如果要生成</span><span style=""><span style="font-family: Times New Roman;">Qt</span></span><span style="">版本,那么需要有</span><span style=""><span style="font-family: Times New Roman;">Qt</span></span><span style="">库的支持。</span><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">(可以从</span><span style=""><a href="http://www.trolltech.com/"><span style="font-family: Times New Roman;">http://www.trolltech.com</span></a></span><span style="">下载)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">如果要生成</span><span style=""><span style="font-family: Times New Roman;">GTK+</span></span><span style="">版本,那么需要有</span><span style=""><span style="font-family: Times New Roman;">GTK+</span></span><span style="">库的支持。(可以从</span><span style=""><a href="http://www.gtk.org/"><span style="font-family: Times New Roman;">http://www.gtk.org</span></a></span><span style="">下载)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">已编译二的</span><span style=""><span style="font-family: Times New Roman;">Windows</span></span><span style="">二进行文件在“</span><span style=""><span style="font-family: Times New Roman;">windows</span></span><span style="">”文件夹中。我们是在</span><span style=""><span style="font-family: Times New Roman;">32</span></span><span style="">位的机器上使用</span><span style=""><span style="font-family: Times New Roman;">Visual C++</span></span><span style="">生成的这些二进制文件,所以最大可以缓存是</span><span style=""><span style="font-family: Times New Roman;">2G</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E2%80%9Csvm-train%E2%80%9D%E7%9A%84%E4%BD%BF%E7%94%A8"></a><span style="">“</span><span style=""><span style="font-family: Times New Roman;">svm-train</span></span><span style="">”的使用</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">语法:</span><span style=""><span style="font-family: Times New Roman;">svm-train [</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">] </span></span><span style="">训练数据集文件</span><span style=""><span style="font-family: Times New Roman;"> [</span></span><span style="">模型文件</span><span style=""><span style="font-family: Times New Roman;">] </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">参数:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-s </span></span><span style="">支持向量机类型:支持向量机类型集合(默认值</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">0 -- C-SVC</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">1 -- nu-SVC</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">2 -- one-class SVM</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">3 -- epsilon-SVR</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">4 -- nu-SVR</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-t </span></span><span style="">内核类型:内核函数集合(默认值</span><span style=""><span style="font-family: Times New Roman;">2</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">0 -- </span></span><span style="">线性函数:</span><span style=""><span style="font-family: Times New Roman;">u'*v</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">1 --</span></span><span class="trans"><span style="">多项式函数:</span></span><span style=""><span style="font-family: Times New Roman;">(gamma*u'*v + coef0)^degree</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">2 --</span></span><span style="">径向基函数:</span><span style=""><span style="font-family: Times New Roman;">exp(-gamma*|u-v|^2)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">3 – sigmoid</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">tanh(gamma*u'*v + coef0)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">4 – </span></span><span style="">预先计算好的内核函数</span><span style=""><span style="font-family: Times New Roman;"> (</span></span><span style="">训练文件中的内核数值</span><span style=""><span style="font-family: Times New Roman;">)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-d degree</span></span><span style="">值:设定内核函数的degree值(默认值</span><span style=""><span style="font-family: Times New Roman;">3</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-g gamma</span></span><span style="">值:设定内核函数的</span><span style=""><span style="font-family: Times New Roman;">gamma</span></span><span style="">值(默认值</span><span style=""><span style="font-family: Times New Roman;">1/k</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-r coef0</span></span><span style="">值:设定内核函数的</span><span style=""><span style="font-family: Times New Roman;">coef0</span></span><span style="">值(默认值</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-c cost</span></span><span style="">值:设定</span><span style=""><span style="font-family: Times New Roman;">C-SVC</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">epsilon-SVR</span></span><span style="">、和</span><span style=""><span style="font-family: Times New Roman;">nu-SVR</span></span><span style="">中的参数</span><span style=""><span style="font-family: Times New Roman;">C</span></span><span style="">的值(默认值</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-n nu</span></span><span style="">值:设定</span><span style=""><span style="font-family: Times New Roman;">nu-SVC</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">one-class SVM</span></span><span style="">、和</span><span style=""><span style="font-family: Times New Roman;">nu-SVR</span></span><span style="">中的参数</span><span style=""><span style="font-family: Times New Roman;">nu</span></span><span style="">的值(默认值</span><span style=""><span style="font-family: Times New Roman;">0.5</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-p epsilon</span></span><span style="">值:设定</span><span style=""><span style="font-family: Times New Roman;">epsilon-SVR</span></span><span style="">中损失函数的</span><span style=""><span style="font-family: Times New Roman;">epsilon</span></span><span style="">值(默认值</span><span style=""><span style="font-family: Times New Roman;">0.1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-m </span></span><span style="">缓存大小:设定缓存内存大小,以</span><span style=""><span style="font-family: Times New Roman;">MB</span></span><span style="">为单位(默认值</span><span style=""><span style="font-family: Times New Roman;">100</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-e epsilon</span></span><span style="">值:设定结束条件(默认值</span><span style=""><span style="font-family: Times New Roman;">0.001</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-h </span></span><span style="">压缩:是否启用启发式压缩,值为</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">(默认</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-b </span></span><span style="">概率期望:在训练</span><span style=""><span style="font-family: Times New Roman;">SVC</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">SVR</span></span><span style="">模型时是否启用概率期望,值为</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">(默认值</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-wi </span></span><span style="">权重:设定</span><span style=""><span style="font-family: Times New Roman;">C-SVC</span></span><span style="">中类</span><span style=""><span style="font-family: Times New Roman;">i</span></span><span style="">的参数</span><span style=""><span style="font-family: Times New Roman;">C</span></span><span style="">为权重</span><span style=""><span style="font-family: Times New Roman;">*C</span></span><span style="">(默认值</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-v n</span></span><span style="">:</span><span style=""><span style="font-family: Times New Roman;">n</span></span><span style="">重交叉验证模式</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-g</span></span><span style="">参数的</span><span style=""><span style="font-family: Times New Roman;">k</span></span><span style="">值表示输入数据的属性数量。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">参数</span><span style=""><span style="font-family: Times New Roman;">-v</span></span><span style="">随机切分数据为</span><span style=""><span style="font-family: Times New Roman;">n</span></span><span style="">个部分,然后计算它们之间交叉验证的精确度</span><span style=""><span style="font-family: Times New Roman;">/</span></span><span style="">平均方差。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">输出内容的含义参见</span><span style=""><span style="font-family: Times New Roman;">libsvm</span></span><span style="">常见问题(</span><span style=""><span style="font-family: Times New Roman;">FAQ</span></span><span style="">)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E2%80%9Csvm-predict%E2%80%9D%E7%9A%84%E4%BD%BF%E7%94%A8"></a><span style="">“</span><span style=""><span style="font-family: Times New Roman;">svm-predict</span></span><span style="">”的使用</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">===================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">语法:</span><span style=""><span style="font-family: Times New Roman;">svm-predict [</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">] </span></span><span style="">测试文件</span><span style=""><span style="font-family: Times New Roman;"> </span></span><span style="">模型文件</span><span style=""><span style="font-family: Times New Roman;"> </span></span><span style="">输出文件</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">参数:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-b </span></span><span style="">概率期望:是否启用概率期望,值为</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">(默认值</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">);</span><span style=""><span style="font-family: Times New Roman;">one-class SVM</span></span><span style="">只支持</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">参数中的模型文件是使用</span><span style=""><span style="font-family: Times New Roman;">svm-train</span></span><span style="">生成的模型文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">测试文件是你想测试的数据文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">svm-predict</span></span><span style="">会把结果输出到输出文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E2%80%9Csvm-scale%E2%80%9D%E7%9A%84%E4%BD%BF%E7%94%A8"></a><span style="">“</span><span style=""><span style="font-family: Times New Roman;">svm-scale</span></span><span style="">”的使用</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">语法:</span><span style=""><span style="font-family: Times New Roman;">svm-scale [</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">] </span></span><span style="">数据文件</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">参数:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-l </span></span><span style="">下限:</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">坐标数值化最低下限(默认值</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-u </span></span><span style="">上限:</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">坐标数值化最高上限(默认值</span><span style=""><span style="font-family: Times New Roman;">+1</span></span><span style="">)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-y y_lower y_upper</span></span><span style="">:</span><span style=""><span style="font-family: Times New Roman;">y</span></span><span style="">坐标数值化区间(默认值:不使用</span><span style=""><span style="font-family: Times New Roman;">y</span></span><span style="">坐标值)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-s </span></span><span style="">保存文件名:将数值化参数保存到指定文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-r </span></span><span style="">恢复文件名:从指定文件重新得到数值化的参数。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">参见本文档中“示例”部分的例子</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E5%AE%9E%E9%99%85%E4%BD%BF%E7%94%A8%E4%B8%AD%E7%9A%84%E6%8A%80%E5%B7%A7"></a><span style="">实际使用中的技巧</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=====================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">数值化你的数据。例如,将所有的属性用区间</span><span style=""><span style="font-family: Times New Roman;">[0,1]</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">[-1,+1]</span></span><span style="">中的数值表示。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">使用</span><span style=""><span style="font-family: Times New Roman;">C-SVC</span></span><span style="">模型时,可以考虑选用“</span><span style=""><span style="font-family: Times New Roman;">tools</span></span><span style="">”文件夹中的模型选择工具。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">在</span><span style=""><span style="font-family: Times New Roman;">nu-SVC/one-class-SVM/nu-SVR</span></span><span style="">模型中的</span><span style=""><span style="font-family: Times New Roman;">nu</span></span><span style="">参数接近训练错误和支持向量的商。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">如果分类的目标数据是不均衡的(比如正数很多,且很少有负数),试着通过</span><span style=""><span style="font-family: Times New Roman;">-wi</span></span><span style="">参数调整惩罚因子</span><span style=""><span style="font-family: Times New Roman;">C</span></span><span style="">(参见下面的示例)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">处理较大规模问题时设定较大的缓存大小(也就是扩大参数</span><span style=""><span style="font-family: Times New Roman;">-m</span></span><span style="">的数值)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E7%A4%BA%E4%BE%8B"></a><span style="">示例</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">========</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-scale -l -1 -u 1 -s range train > train.scale</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-scale -r range test > test.scale</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">将训练数据中的每个属性都在区间</span><span style=""><span style="font-family: Times New Roman;">[-1,1]</span></span><span style="">中数值化。先将数据化因子保存到文件</span><span style=""><span style="font-family: Times New Roman;">range</span></span><span style="">中,然后再用于数值化测试数据。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-train -s 0 -c 5 -t 2 -g 0.5 -e 0.1 data_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">使用</span><span style=""><span style="font-family: Times New Roman;">RBF</span></span><span style="">内核函数</span><span style=""><span style="font-family: Times New Roman;">exp(-0.5|u-v|^2)</span></span><span style="">,</span><span style=""><span style="font-family: Times New Roman;">C=10</span></span><span style="">,并且设定结束条件为</span><span style=""><span style="font-family: Times New Roman;">0.1</span></span><span style="">来训练分类器</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-train -s 3 -p 0.1 -t 0 data_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">使用线性内核函数</span><span style=""><span style="font-family: Times New Roman;">u'v</span></span><span style="">,设定损失方程中</span><span style=""><span style="font-family: Times New Roman;">epsilon=0.1</span></span><span style="">解决支持向量机回归问题。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-train -c 10 -w1 1 -w-1 5 data_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对类</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">使用惩罚因子</span><span style=""><span style="font-family: Times New Roman;">10=1*10</span></span><span style="">,而对类</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">使用惩罚因子</span><span style=""><span style="font-family: Times New Roman;">50=5*50</span></span><span style="">来训练分类器。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-train -s 0 -c 100 -g 0.1 -v 5 data_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">使用参数</span><span style=""><span style="font-family: Times New Roman;">C=100</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">gamma=0.1</span></span><span style="">对分类器进行五次交叉验证。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-train -s 0 -b 1 data_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">> svm-predict -b 1 test_file data_file.model output_file</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">根据概率信息和有概率期望的预测数据获得一个模型。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E9%A2%84%E5%85%88%E8%AE%A1%E7%AE%97%E5%A5%BD%E7%9A%84%E5%86%85%E6%A0%B8"></a><span style="">预先计算好的内核</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">===================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">用户可以预告计算好核心数值并将它们作为训练和测试文件输入。这样支持向量机工具包就不需要原始的训练</span><span style=""><span style="font-family: Times New Roman;">/</span></span><span style="">测试数据集了。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">假设有</span><span style=""><span style="font-family: Times New Roman;">L</span></span><span style="">个训练实例,</span><span style=""><span style="font-family: Times New Roman;">x1,…,xL</span></span><span style="">。设</span><span style=""><span style="font-family: Times New Roman;">K(x,y)</span></span><span style="">为实例</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">与</span><span style=""><span style="font-family: Times New Roman;">y</span></span><span style="">的内核值。则输入数据格式为:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">xi</span></span><span style="">的新训练实例:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;"><label>0:I 1:K(xi,x1)…L:K(xi,xL)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">的新测试实例:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;"><label>0:?1:K(x,x1)…L:K(x,xL)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">也就是说,在训练文件中,第一列必须是</span><span style=""><span style="font-family: Times New Roman;">xi</span></span><span style="">的“</span><span style=""><span style="font-family: Times New Roman;">ID</span></span><span style="">”。在测试实例中,</span><span style=""><span style="font-family: Times New Roman;">?</span></span><span style="">表示任意值。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">包括“</span><span style=""><span style="font-family: Times New Roman;">±0</span></span><span style="">”在内的所有内核数值都必须明确给定。训练</span><span style=""><span style="font-family: Times New Roman;">/</span></span><span style="">测试文件的任何排列或随机子集都是合法的(见下面的例子)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">注意:与支持向量机工具包的早期发行版本中工具的预先计算好核心集的格式略有不同</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">示例:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">假设原始训练数据有三个实例,每个实例有四种属性,而测试数据有一个实例:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>15<span style=""> </span>1:1 2:1 3:1 4:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>45<span style=""> </span>2:3<span style=""> </span>4:3</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>25<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>15<span style=""> </span>1:1<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">如果使用线性核心,那么我们会得到如下的训练与测试集合:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>15<span style=""> </span>0:1 1:4 2:6<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>45<span style=""> </span>0:2 1:6 2:18 3:0 </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>25<span style=""> </span>0:3 1:1 2:0<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>15<span style=""> </span>0:? 1:2 2:0<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style=""> </span>? </span></span><span style="">表示任意值</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">以上训练文件中的任意子集也都是合法的。例如:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>25<span style=""> </span>0:3 1:1 2:0<span style=""> </span>3:1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>45<span style=""> </span>0:2 1:6 2:18 3:0 </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style=""><span style="font-family: Times New Roman;"> </span></span></span><span style="">意味着核心矩阵是</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">[K(2,2) K(2,3)] = [18 0]</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">[K(3,2) K(3,3)] = [0<span style=""> </span>1]</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E5%87%BD%E6%95%B0%E5%BA%93%E7%9A%84%E4%BD%BF%E7%94%A8"></a><span style="">函数库的使用</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=============</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">这些函数和结构都在头文件“</span><span style=""><span style="font-family: Times New Roman;">svm.h</span></span><span style="">”中有声名。你需要在你的</span><span style=""><span style="font-family: Times New Roman;">C/C++</span></span><span style="">源文件中添加</span><span style=""><span style="font-family: Times New Roman;">#include “svm.h”</span></span><span style="">语句,在连接时需要将你的程序与</span><span style=""><span style="font-family: Times New Roman;">svm.cpp</span></span><span style="">连接。具体使用方法可以参考“</span><span style=""><span style="font-family: Times New Roman;">svm-train.c</span></span><span style="">”和“</span><span style=""><span style="font-family: Times New Roman;">svm-predict.c</span></span><span style="">”的使用示例。在文件</span><span style=""><span style="font-family: Times New Roman;">svm.h</span></span><span style="">中使用</span><span style=""><span style="font-family: Times New Roman;">LIBSVM_VERSION</span></span><span style="">定义了版本号,以便读者查阅。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">在对测试数据进行分类之前,需要先使用训练数据建立一个支持向量模型。模型可以以文件的形式存储以备以后使用。一旦建立好了支持向量机模型,就可以用它来对新的数据进行分类了。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">struct svm_model *svm_train(const struct svm_problem *prob, const struct svm_parameter *param);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">这个函数根据给定的参数和训练数据构建并返回一个支持向量机模型。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">结构体</span><span style=""><span style="font-family: Times New Roman;">svm_problem</span></span><span style="">将问题形式化:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">struct svm_problem</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>{</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int l;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double *y;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">struct svm_node **x;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>};</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">其中“</span><span style=""><span style="font-family: Times New Roman;">l</span></span><span style="">”表示训练数据的实例数,而“</span><span style=""><span style="font-family: Times New Roman;">y</span></span><span style="">”是一个数组,用于存放它们的目标值。(类型值用整型数据,回归值用实数)“</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">”是一个数组指针,每一个指针指向一个稀疏的训练向量(即一个</span><span style=""><span style="font-family: Times New Roman;">svm_node</span></span><span style="">数组)。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">例如,如果我们有如下的训练数据:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">LABEL</span><span lang="EN-US"><span style=""> </span></span><span style="">ATTR1</span><span lang="EN-US"><span style=""> </span></span><span style="">ATTR2</span><span lang="EN-US"><span style=""> </span></span><span style="">ATTR3</span><span lang="EN-US"><span style=""> </span></span><span style="">ATTR4</span><span lang="EN-US"><span style=""> </span></span><span style="">ATTR5</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>-----<span style=""> </span>-----<span style=""> </span>-----<span style=""> </span>-----<span style=""> </span>-----<span style=""> </span>-----</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>1<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0.1<span style=""> </span><span style=""> </span>0.2<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>2<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0.1<span style=""> </span><span style=""> </span>0.3<span style=""> </span>-1.2<span style=""> </span><span style=""> </span>0</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>1<span style=""> </span><span style=""> </span>0.4<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>2<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>0.1<span style=""> </span><span style=""> </span>0<span style=""> </span><span style=""> </span>1.4<span style=""> </span><span style=""> </span>0.5</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>3<span style=""> </span>-0.1<span style=""> </span>-0.2<span style=""> </span><span style=""> </span>0.1<span style=""> </span><span style=""> </span>1.1<span style=""> </span><span style=""> </span>0.1</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">于是</span><span style=""><span style="font-family: Times New Roman;">svm_problem</span></span><span style="">的构成如下:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">l = 5</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">y -> 1 2 1 2 3</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">x -> [ ] -> (2,0.1) (3,0.2) (-1,?)</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span><span style=""></span>[ ] -> (2,0.1) (3,0.3) (4,-1.2) (-1,?)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span><span style=""></span>[ ] -> (1,0.4) (-1,?)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span><span style=""></span>[ ] -> (2,0.1) (4,1.4) (5,0.5) (-1,?)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span><span style=""></span>[ ] -> (1,-0.1) (2,-0.2) (3,0.1) (4,1.1) (5,0.1) (-1,?)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">其中(索引,值)存储在结构“</span><span style=""><span style="font-family: Times New Roman;">svm_node</span></span><span style="">”中:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">struct svm_node</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>{</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int index;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double value;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>};</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">当索引为</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">时表示已经到达向量的末端。注意索引必须“升序”排列。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">结构体</span><span style=""><span style="font-family: Times New Roman;">svm_parameter</span></span><span style="">描述了一个支持向量机的参数:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">struct svm_parameter</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>{</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int svm_type;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int kernel_type;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int degree;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for poly */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double gamma;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for poly/rbf/sigmoid */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double coef0;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for poly/sigmoid */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">/* these are for training only */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double cache_size; /* in MB */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double eps;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* stopping criteria */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double C;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for C_SVC, EPSILON_SVR, and NU_SVR */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int nr_weight;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for C_SVC */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int *weight_label;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for C_SVC */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double* weight;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for C_SVC */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double nu;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for NU_SVC, ONE_CLASS, and NU_SVR */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">double p;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* for EPSILON_SVR */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int shrinking;</span><span lang="EN-US"><span style=""> </span></span><span style="">/* use the shrinking heuristics */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">int probability; /* do probability estimates */</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style=""> </span>};</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">svm_type</span></span><span style="">可以是</span><span style=""><span style="font-family: Times New Roman;">C_SVC</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">NU_SVC</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">ONE_CLASS</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">EPSILON_SVR</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">NU_SVR</span></span><span style="">其中的一种。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">C_SVC:</span><span lang="EN-US"><span style=""> </span></span><span style="">C-SVM </span></span><span style="">分类</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">NU_SVC:</span><span lang="EN-US"><span style=""> </span></span><span style="">nu-SVM </span></span><span style="">分类</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">ONE_CLASS:</span><span lang="EN-US"><span style=""> </span></span><span style="">one-class-SVM</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">EPSILON_SVR:</span><span lang="EN-US"><span style=""> </span></span><span style="">epsilon-SVM</span></span><span style="">回归</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">NU_SVR:</span><span lang="EN-US"><span style=""> </span></span><span style="">nu-SVM</span></span><span style="">回归</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">kernel_type</span></span><span style="">可以是</span><span style=""><span style="font-family: Times New Roman;">LINEAR</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">POLY</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">RBF</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">SIGMOID</span></span><span style="">其中一种。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">LINEAR:</span><span lang="EN-US"><span style=""> </span></span><span style="">u'*v</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">POLY:</span><span lang="EN-US"><span style=""> </span></span><span style="">(gamma*u'*v + coef0)^degree</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">RBF:</span><span lang="EN-US"><span style=""> </span></span><span style="">exp(-gamma*|u-v|^2)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span style="">SIGMOID:</span><span lang="EN-US"><span style=""> </span></span><span style="">tanh(gamma*u'*v + coef0)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">PRECOMPUTED:</span></span><span style="">训练集文件中的核心值</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">cache_size</span></span><span style="">是核心缓存的大小,单位为</span><span style=""><span style="font-family: Times New Roman;">MB</span></span><span style="">。</span><span style=""><span style="font-family: Times New Roman;">C</span></span><span style="">是违背约束成本(惩罚值)。</span><span style=""><span style="font-family: Times New Roman;">eps</span></span><span style="">是结束条件。(一般地,我们在</span><span style=""><span style="font-family: Times New Roman;">nu-SVC</span></span><span style="">模型中使用</span><span style=""><span style="font-family: Times New Roman;">0.00001</span></span><span style="">,在其它模型中使用</span><span style=""><span style="font-family: Times New Roman;">0.001</span></span><span style="">)。</span><span style=""><span style="font-family: Times New Roman;">nu</span></span><span style="">是</span><span style=""><span style="font-family: Times New Roman;">nu-SVM</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">nu-SVR</span></span><span style="">与</span><span style=""><span style="font-family: Times New Roman;">one-class-SVM</span></span><span style="">中的一个参数。</span><span style=""><span style="font-family: Times New Roman;">p </span></span><span style="">是</span><span style=""><span style="font-family: Times New Roman;">epsilon-SVM</span></span><span style="">回归中对</span><span style=""><span style="font-family: Times New Roman;">epsilon</span></span><span style="">不敏感函数的</span><span style=""><span style="font-family: Times New Roman;">epsilon</span></span><span style="">值。</span><span style=""><span style="font-family: Times New Roman;">shirnking = 1</span></span><span style="">表示使用压缩,否则</span><span style=""><span style="font-family: Times New Roman;"> = 0</span></span><span style="">。</span><span style=""><span style="font-family: Times New Roman;"> probability = 1</span></span><span style="">表示得到带概率信息的模型,否则</span><span style=""><span style="font-family: Times New Roman;"> = 0</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">nr_weight</span></span><span style="">、</span><span style=""><span style="font-family: Times New Roman;">weight_label</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">weight</span></span><span style="">(权重)用于改变某些类的惩罚因子(如果一个类的权重不变,则将权重值设定为</span><span style=""><span style="font-family: Times New Roman;">1</span></span><span style="">)这在使用不均衡输入数据或使用不均匀错误成本训练分类器时尤其有用。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">nr_weight</span></span><span style="">是数组</span><span style=""><span style="font-family: Times New Roman;">weight_label</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">weight</span></span><span style="">中的元素个数。每个</span><span style=""><span style="font-family: Times New Roman;">weight[i]</span></span><span style="">对应一个</span><span style=""><span style="font-family: Times New Roman;">weight_label[i]</span></span><span style="">,表示类</span><span style=""><span style="font-family: Times New Roman;">weight_label[i]</span></span><span style="">的惩罚是由因子</span><span style=""><span style="font-family: Times New Roman;">weight[i]</span></span><span style="">确定的。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">如果不想改变任何类的惩罚因子,那么只需要将</span><span style=""><span style="font-family: Times New Roman;">nr_weight</span></span><span style="">设定为</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">注意</span><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">因为</span><span style=""><span style="font-family: Times New Roman;">svm_model</span></span><span style="">含有指向</span><span style=""><span style="font-family: Times New Roman;">svm_problem</span></span><span style="">的指针,如果仍要使用由</span><span style=""><span style="font-family: Times New Roman;">svm_train()</span></span><span style="">产生的</span><span style=""><span style="font-family: Times New Roman;">svm_model</span></span><span style="">,那么就不要释放</span><span style=""><span style="font-family: Times New Roman;">svm_problem</span></span><span style="">的内存。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">注意</span><span style=""><span style="font-family: Times New Roman;">*</span></span><span style="">为了避免错误的参数,在调用</span><span style=""><span style="font-family: Times New Roman;">svm_train()</span></span><span style="">之前应该先调用</span><span style=""><span style="font-family: Times New Roman;">svm_check_parameter()</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">double svm_predict(const struct svm_model *model,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">const struct svm_node *x);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">在给定模型的前提下,这个函数可以用来对测试向量</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">进行分类或回归。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">分类模型返回的是</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">的预测类。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">回归模型返回使用该模型计算所得的</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">函数值。</span><span style=""><span style="font-family: Times New Roman;">one-class</span></span><span style="">模型返回</span><span style=""><span style="font-family: Times New Roman;">+1</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">void svm_cross_validation(const struct svm_problem *prob,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">const struct svm_parameter *param, int nr_fold, double *target);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">这个函数用于交叉验证。数据会分成</span><span style=""><span style="font-family: Times New Roman;">nr_fold</span></span><span style="">个部分。在给定的参数下,顺序地对每一部分数据用其余部分数据训练成的模型进行验证。在验证过程中,预测标签(所有</span><span style=""><span style="font-family: Times New Roman;">prob</span></span><span style="">的实例)存放到一个名为</span><span style=""><span style="font-family: Times New Roman;">target</span></span><span style="">(目标)的数组。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">svm_prob</span></span><span style="">的格式与</span><span style=""><span style="font-family: Times New Roman;">svm_train()</span></span><span style="">的相同。</span><span lang="EN-US"><span style="font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">int svm_get_svm_type(const struct svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">这个函数用于确定模型的</span><span style=""><span style="font-family: Times New Roman;">svm_type</span></span><span style="">。可能的</span><span style=""><span style="font-family: Times New Roman;">svm_type</span></span><span style="">值已在</span><span style=""><span style="font-family: Times New Roman;">svm.h</span></span><span style="">中定义。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">int svm_get_nr_class(const svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对于分类模型,本函数用于得到类的数量。回归或</span><span style=""><span style="font-family: Times New Roman;">one-class</span></span><span style="">模型的返回值是</span><span style=""><span style="font-family: Times New Roman;">2</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">void svm_get_labels(const svm_model *model, int* label)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对于分类模型,这个函数输出名称标签到一个名为</span><span style=""><span style="font-family: Times New Roman;">label</span></span><span style="">的数组。对于回归或</span><span style=""><span style="font-family: Times New Roman;">one-class</span></span><span style="">模型,</span><span style=""><span style="font-family: Times New Roman;">label</span></span><span style="">的值保护不变。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">double svm_get_svr_probability(const struct svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对于带有概率信息的回归模型,此函数将输出一个值</span><span style=""><span style="font-family: Times New Roman;">sigma>0</span></span><span style="">。对于测试数据,我们考虑概率模型:目标值</span><span style=""><span style="font-family: Times New Roman;"> = </span></span><span style="">预测值</span><span style=""><span style="font-family: Times New Roman;"> + z</span></span><span style="">,</span><span style=""><span style="font-family: Times New Roman;">z</span></span><span style="">:拉普拉斯分布</span><span style=""><span style="font-family: Times New Roman;">e^(-|z|/sigma)/(2sigma)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">如果不是</span><span style=""><span style="font-family: Times New Roman;">svr</span></span><span style="">模型,或者不含有需要的信息,则返回</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">void svm_predict_values(const svm_model *model,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span><span style=""> </span></span><span style="">const svm_node *x, double* dec_values)</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">在给定模型的前提下,这个函数可以用来给出测试向量</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">的决策值。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对于有</span><span style=""><span style="font-family: Times New Roman;">nr_class</span></span><span style="">个类的分类模型,这个函数给出</span><span style=""><span style="font-family: Times New Roman;">nr_class*(nr_class-1)/2</span></span><span style="">个决策值,并存到数组</span><span style=""><span style="font-family: Times New Roman;">dec_values</span></span><span style="">中,其中</span><span style=""><span style="font-family: Times New Roman;">nr_class</span></span><span style="">可以通过函数</span><span style=""><span style="font-family: Times New Roman;">svm_get_nr_class</span></span><span style="">得到。序列是</span><span style=""><span style="font-family: Times New Roman;">label[0] vs. label[1], …, label[0] vs. label[nr_class – 1], label[1] vs. label[2], …, label[nr_class-2] vs. label[nar_class-1], </span></span><span style="">其中</span><span style=""><span style="font-family: Times New Roman;">label</span></span><span style="">可以通过函数</span><span style=""><span style="font-family: Times New Roman;">svm_get_lables</span></span><span style="">得到。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">回归模型中,label[0]表示使用该模型计算所得的</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">函数值。</span><span style=""><span style="font-family: Times New Roman;">one-class</span></span><span style="">模型中,</span><span style=""><span style="font-family: Times New Roman;">label[0]</span></span><span style="">是</span><span style=""><span style="font-family: Times New Roman;">+1</span></span><span style="">或</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">double svm_predict_probability(const struct svm_model *model,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span><span style=""> </span></span><span style="">const struct svm_node *x, double* prob_estimates);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style=""><span style="font-size: small; font-family: Times New Roman;"> </span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">在给定带概率信息的模型的前提下,这个函数可以用来对测试向量</span><span style=""><span style="font-family: Times New Roman;">x</span></span><span style="">进行分类或回归。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">对于带有概率信息的分类模型,这个函数会把</span><span style=""><span style="font-family: Times New Roman;">nr_class</span></span><span style="">概率期望输出到数组</span><span style=""><span style="font-family: Times New Roman;">prob_estimates</span></span><span style="">中。</span><span style=""><span style="font-family: Times New Roman;"> nr_class</span></span><span style="">可以通过函数</span><span style=""><span style="font-family: Times New Roman;">svm_get_nr_class</span></span><span style="">得到。返回值是概率值最高的类。对于回归或</span><span style=""><span style="font-family: Times New Roman;">one-class</span></span><span style="">支持向量机,数组</span><span style=""><span style="font-family: Times New Roman;">prob_estimates</span></span><span style="">保持不变,而返回值与</span><span style=""><span style="font-family: Times New Roman;">svm_predict</span></span><span style="">的返回值相同。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">const char *svm_check_parameter(const struct svm_problem *prob,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">const struct svm_parameter *param);</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">本函数检验对于当前问题,参数是否合法。在调用</span><span style=""><span style="font-family: Times New Roman;">svm_train()</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">svm_cross_validation()</span></span><span style="">之前应该调用此函数。如果参数合法,则返回</span><span style=""><span style="font-family: Times New Roman;">NULL</span></span><span style="">,如果不合法,则返回错误信息。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">int svm_check_probability_model(const struct svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">此函数用于判断当前模型是否含有进行概率期望运算所需要的信息。如果含有则返回</span><span style=""><span style="font-family: Times New Roman;">+1</span></span><span style="">。否则返回</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">。在调用</span><span style=""><span style="font-family: Times New Roman;">sv svm_get_svr_probability</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">svm_predict_probability</span></span><span style="">之前应该调用此函数。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">int svm_save_model(const char *model_file_name,</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span><span style=""> </span></span><span style="">const struct svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">此函数用于将训练好的模型保存到文件中,如果保存成功则返回</span><span style=""><span style="font-family: Times New Roman;">0</span></span><span style="">,如果发生错误则返回</span><span style=""><span style="font-family: Times New Roman;">-1</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">struct svm_model *svm_load_model(const char *model_file_name);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">此函数从文件中读取模型并返回指向该模型的指针,如果读取失败则回返空指针。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">void svm_destroy_model(struct svm_model *model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">此函数用于释放指定模型的内存。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">-</span></span><span style="">函数:</span><span style=""><span style="font-family: Times New Roman;">void svm_destroy_param(struct svm_parameter *param);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">此函数用于释放指定参数集的内存。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_Java%E7%89%88%E6%9C%AC"></a><span style=""><span style="font-family: Times New Roman;">Java</span></span><span style="">版本</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">============</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">java</span></span><span style="">预编译类包“</span><span style=""><span style="font-family: Times New Roman;">libsvm.jar</span></span><span style="">”以及源代码文件都在文件夹</span><span style=""><span style="font-family: Times New Roman;">java</span></span><span style="">中。要运行程序,使用下列命令:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">java -classpath libsvm.jar svm_train <</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">java -classpath libsvm.jar svm_predict <</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">java -classpath libsvm.jar svm_toy <</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">java -classpath libsvm.jar svm_scale <</span></span><span style="">参数表</span><span style=""><span style="font-family: Times New Roman;">></span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">注意:程序运行需要</span><span style=""><span style="font-family: Times New Roman;">java 1.5</span></span><span style="">(</span><span style=""><span style="font-family: Times New Roman;">5.0</span></span><span style="">)支持。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">需要把</span><span style=""><span style="font-family: Times New Roman;">java</span></span><span style="">运行时库(如</span><span style=""><span style="font-family: Times New Roman;">classes.zip</span></span><span style="">)添加到类路径。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">需要将</span><span style=""><span style="font-family: Times New Roman;">java</span></span><span style="">最大堆容量调大。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">类库的使用方法与</span><span style=""><span style="font-family: Times New Roman;">C</span></span><span style="">版本类似。可用的方程如下:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">public class svm {</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static final int LIBSVM_VERSION=288;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static svm_model svm_train(svm_problem prob, svm_parameter param);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static void svm_cross_validation(svm_problem prob, svm_parameter param, int nr_fold, double[] target);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static int svm_get_svm_type(svm_model model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static int svm_get_nr_class(svm_model model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static void svm_get_labels(svm_model model, int[] label);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static double svm_get_svr_probability(svm_model model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static void svm_predict_values(svm_model model, svm_node[] x, double[] dec_values);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static double svm_predict(svm_model model, svm_node[] x);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static double svm_predict_probability(svm_model model, svm_node[] x, double[] prob_estimates);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static void svm_save_model(String model_file_name, svm_model model) throws IOException</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static svm_model svm_load_model(String model_file_name) throws IOException</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static String svm_check_parameter(svm_problem prob, svm_parameter param);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: Times New Roman;"><span lang="EN-US"><span style=""> </span></span><span style="">public static int svm_check_probability_model(svm_model model);</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">}</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">“</span><span style=""><span style="font-family: Times New Roman;">libsvm</span></span><span style="">”包中含有该类库。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">注意在</span><span style=""><span style="font-family: Times New Roman;">java</span></span><span style="">版本中,</span><span style=""><span style="font-family: Times New Roman;">svm_node[]</span></span><span style="">不以索引值</span><span style=""><span style="font-family: Times New Roman;">=-1</span></span><span style="">的结点结束。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E7%94%9F%E6%88%90windows%E4%B8%8B%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%EF%BC%88%E4%BA%8C%E8%BF%9B%E8%A1%8C%E6%96%87%E4%BB%B6%E5%B0%B1%E6%98%AF%E9%80%9A%E5%B8%B8%E6%89%80%E8%AF%B4%E7%9A%84exe%E6%96%87%E4%BB%B6%EF%BC%8C"></a><span style="">生成</span><span style=""><span style="font-family: Times New Roman;">windows</span></span><span style="">下的二进制文件(二进行文件就是通常所说的</span><span style=""><span style="font-family: Times New Roman;">exe</span></span><span style="">文件,即可执行文件)</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">=========================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style=""><span style="font-family: Times New Roman;">windows</span></span><span style="">二进制文件在文件夹“</span><span style=""><span style="font-family: Times New Roman;">windows</span></span><span style="">”中。可以使用</span><span style=""><span style="font-family: Times New Roman;">visual C++</span></span><span style="">制成这些文件,步骤如下:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">1. </span></span><span style="">打开一个</span><span style=""><span style="font-family: Times New Roman;">DOS</span></span><span style="">命令窗(或者</span><span style=""><span style="font-family: Times New Roman;">visual studio</span></span><span style="">命令提示)并到</span><span style=""><span style="font-family: Times New Roman;">libsvm</span></span><span style="">文件夹中。如果尚未设置</span><span style=""><span style="font-family: Times New Roman;">VC++</span></span><span style="">的环境变量,那么可以键入“</span><span style=""><span style="font-family: Times New Roman;">C:\Program Files\Microsoft Visual Studio 8.0\VC\bin\vcvars32.bat</span></span><span style="">”。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">可以根据</span><span style=""><span style="font-family: Times New Roman;">VC++</span></span><span style="">的版本及安装目录改变上面的目录。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">2. </span></span><span style="">键入</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">nmake -f Makefile.win clean all</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">3. </span></span><span style="">(可选)要生成</span><span style=""><span style="font-family: Times New Roman;">python</span></span><span style="">接口,下载并安装</span><span style=""><span style="font-family: Times New Roman;">Python</span></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">打开</span><span style=""><span style="font-family: Times New Roman;">Makefile.win</span></span><span style="">文件,将</span><span style=""><span style="font-family: Times New Roman;">PYTHON_INC</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">PYTHON_LIB</span></span><span style="">设置为</span><span style=""><span style="font-family: Times New Roman;">python</span></span><span style="">安装目录。键入</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small; font-family: Times New Roman;">nmake -f Makefile.win python</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">然后将</span><span style=""><span style="font-family: Times New Roman;">windows\python\svmc.pyd</span></span><span style="">拷贝到</span><span style=""><span style="font-family: Times New Roman;">python</span></span><span style="">文件夹下。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">还可以在</span><span style=""><span style="font-family: Times New Roman;">Visual C++ </span></span><span style="">环境下生成这些文件。详情请见支持向量机工具包常见问题(</span><span style=""><span style="font-family: Times New Roman;">FAQ</span></span><span style="">)。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E9%99%84%E5%8A%A0%E5%B7%A5%E5%85%B7%EF%BC%9A%E5%AD%90%E5%8F%96%E6%A0%B7%E5%99%A8%EF%BC%8C%E5%8F%82%E6%95%B0%E9%80%89%E6%8B%A9%E5%99%A8%EF%BC%8C%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F%E8%BE%83%E9%AA%8C%E5%99%A8%E7%AD%89"></a><span style="">附加工具:子取样器,参数选择器,数据格式较验器等</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">============================================================================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">参见</span><span style=""><span style="font-family: Times New Roman;">tools</span></span><span style="">文件夹下的</span><span style=""><span style="font-family: Times New Roman;">README</span></span><span style="">文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_Python%E6%8E%A5%E5%8F%A3"></a><span style=""><span style="font-family: Times New Roman;">Python</span></span><span style="">接口</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">参见</span><span style=""><span style="font-family: Times New Roman;">python</span></span><span style="">文件夹下的</span><span style=""><span style="font-family: Times New Roman;">README</span></span><span style="">文件。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<h1 style="margin: 17pt 0cm 16.5pt;">
<a name="_%E9%99%84%E5%BD%95"></a><span style="">附录</span>
</h1>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">======================</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">如果您认为支持向量机工具包对您有帮助,那么请标明引自</span><span style=""><span style="font-family: Times New Roman;">Chih-Chung Chang</span></span><span style="">和</span><span style=""><span style="font-family: Times New Roman;">Chih-Jen Lin</span></span><span style="">的支持向量机工具包:支持向量机的一个类库,</span><span style=""><span style="font-family: Times New Roman;">2001</span></span><span style="">年。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">软件可以从</span><span style=""><a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm"><span style="font-family: Times New Roman;">http://www.csie.ntu.edu.tw/~cjlin/libsvm</span></a></span><span style="">下载。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left;" align="left"><span style="font-size: small;"><span style="">支持向量机工具包的使用文档可以从</span><span style=""><a href="http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf"><span style="font-family: Times New Roman;">http://www.csie.ntu.edu.tw/~cjlin/papers/libsvm.pdf</span></a></span><span style="">下载。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">如果您有任何问题或建议,请发电子邮件到</span><span style=""><a href="mailto:cjlin@csie.ntu.edu.tw"><span style="font-family: Times New Roman;">cjlin@csie.ntu.edu.tw</span></a></span><span style="">。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style=""><span style="font-size: small;">致谢:</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">这项工作得到了台湾行政院国家科学委员会的</span><span style=""><span style="font-family: Times New Roman;">NSC 89-2213-E-002-013</span></span><span style="">许可的部分支持。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="">作者在些向于开发团队成员及参与了建设性讨论与评论的广大用户致以诚挚的谢意!开发团队及建设性建议提出者列于:</span><span style=""><a href="http://www.csie.ntu.edu.tw/~cjlin/libsvm/acknowledgements"><span style="font-family: Times New Roman;">http://www.csie.ntu.edu.tw/~cjlin/libsvm/acknowledgements</span></a></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;"></span></span></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值