<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>迷途知返 &#187; SVM</title>
	<atom:link href="http://pwwang.com/category/technology/svm/feed/" rel="self" type="application/rss+xml" />
	<link>http://pwwang.com</link>
	<description>专注技术,用心生活!</description>
	<lastBuildDate>Fri, 02 Jul 2010 02:26:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>用LIBSVM做回归和预测的步骤</title>
		<link>http://pwwang.com/digest/%e7%94%a8libsvm%e5%81%9a%e5%9b%9e%e5%bd%92%e5%92%8c%e9%a2%84%e6%b5%8b%e7%9a%84%e6%ad%a5%e9%aa%a4/</link>
		<comments>http://pwwang.com/digest/%e7%94%a8libsvm%e5%81%9a%e5%9b%9e%e5%bd%92%e5%92%8c%e9%a2%84%e6%b5%8b%e7%9a%84%e6%ad%a5%e9%aa%a4/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 03:22:23 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[Digest]]></category>
		<category><![CDATA[SVM]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=643</guid>
		<description><![CDATA[&#160;

文字版来自: http://blog.sina.com.cn/s/blog_4e2c70250100blje.html

摸索着做了几个实验，试着把过程写下来，请大家指点。

<span class="readmore"><a href="http://pwwang.com/digest/%e7%94%a8libsvm%e5%81%9a%e5%9b%9e%e5%bd%92%e5%92%8c%e9%a2%84%e6%b5%8b%e7%9a%84%e6%ad%a5%e9%aa%a4/" title="用LIBSVM做回归和预测的步骤">Read More: 3183 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p><strong>文字版来自:</strong><a target="_blank" href="http://blog.sina.com.cn/s/blog_4e2c70250100blje.html"><strong> http://blog.sina.com.cn/s/blog_4e2c70250100blje.html</strong></a></p>
<p>摸索着做了几个实验，试着把过程写下来，请大家指点。<br />
&lt;1&gt; 下载Libsvm、Python和Gnuplot。我用的版本分别是：Libsvm（2.8.1），Python（2.4），Gnuplot（3.7.3）。注意：Gnuplot一定要用3.7.3版，3.7.1版的有bug.</p>
<p>&lt;2&gt; 修改训练和测试数据的格式（可以自己用perl编个小程序）：<br />
目标值 第一维特征编号：第一维特征值 第二维特征编号：第二维特征值 &#8230;<br />
&#8230;<br />
例如：<br />
2.3 1:5.6 2:3.2<br />
表示训练用的特征有两维，第一维是5.6，第二维是3.2，目标值是2.3</p>
<p>注意：训练和测试数据的格式必须相同，都如上所示。测试数据中的目标值是为了计算误差用</p>
<p>&lt;3&gt; 分别使用Libsvm中的Windows版本的工具svmscale.exe进行训练和测试数据的归一化，svmtrain.exe进行模型训练，svmpredict.exe进行预测<br />
（1）svmscale.exe的用法：svmscale.exe feature.txt feature.scaled<br />
默认的归一化范围是[－1，1]，可以用参数-l和-u分别调整上界和下届,feature.txt是输入特征文件名<br />
输出的归一化特征名为feature.scaled<br />
（2）svmtrtrain.exe训练模型<br />
我习惯写个批处理小程序，处理起来比较方便。例如svm_train.bat中训练语句为：<br />
svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled</p>
<div class="code">-s用来指定的SVM的类型(default 0)</p>
<p>0 &ndash; C-SVC<br />
1 &ndash; nu-SVC<br />
2 &ndash;&nbsp;one-class SVM<br />
3 &ndash; epsilon-SVR<br />
4 &ndash; nu-SVR<a name="baidusnap5"></a></p>
<p>0,1分类问题 2分布估算问题 3,4是回归问题</p></div>
<p>训练得到的模型为feature.scaled.model</p>
<p>具体的参数含义可以参考帮助文档。这里-s是选择SVM的类型。对于回归来说，只能选3或者4，3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是选择核函数，通常选用RBF核函数，原因在&ldquo;A Practical Guide support vector classification&rdquo;中已经简单介绍过了。-p尽量选个比较小的数字。需要仔细调整的重要参数是-c和-g。除非用gridregression.py来搜索最优参数，否则只能自己慢慢试了。</p>
<p>用gridregression.py搜索最优参数的方法如下：<br />
python.exe gridregression.py -svmtrain H:\SVM\libsvm-2.81\windows\svmtrain.exe -gnuplot C:\gp373w32\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:\SVM\libsvm-2.81\windows\feature.scaled &gt; gridregression_feature.parameter</p>
<p>注意：-svmtrain是给出svmtrain.exe所在路径，一定要是完整的全路径<br />
-gnuplot是给出pgnuplot.exe所在路径。这里要用pgnuplot.exe这种命令行形式的，不要用wgnupl32.exe，这个是图形界面的。<br />
-log2c是给出参数c的范围和步长<br />
-log2g是给出参数g的范围和步长<br />
-log2p是给出参数p的范围和步长<br />
上面三个参数可以用默认范围和步长<br />
-s选择SVM类型，也是只能选3或者4<br />
-t是选择核函数<br />
-v 10 将训练数据分成10份做交叉验证。默认为5<br />
最后给出归一化后训练数据的全路径<br />
搜索最优参数的过程写入文件gridregression_feature.parameter（注意别少了这个&gt;符号啊）</p>
<p>根据搜索到的最优参数修改feature.scaled.model中的参数<br />
（3）用svmpredict.exe进行预测<br />
svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted<br />
其中feature_test.scaled是归一化后的测试特征文件名，feature.scaled.model是训练好的模型，SVM预测的值在feature_test.predicted中。</p>
<p><span id="more-643"></span><strong>图文版来自: </strong><a href="http://blog.sina.com.cn/s/blog_5980835e0100drwx.html"><strong>http://blog.sina.com.cn/s/blog_5980835e0100drwx.html</strong></a></p>
<p>&nbsp;</p>
<p>只要修改一个文件（gridregression.py）的路径就可以了，其他网上说的两个文件（grid.py和easy.py）的路径可以不做修改，因为回归根本没有用到。修改的地方是绿色的两行路径，写成实际路径就可以了。网上下载下来的一般都是r&quot;&#8230;svm-&#8230;&quot;所以要改。修改后如下图。</p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eh6a2f95c47dff690.jpg" />&nbsp;<wbr></wbr></p>
<p>&nbsp;<wbr></wbr></p>
<p>改完之后，首先把你的数据集包括data2和test2（这是原始的）放到C:\libsvm-2.88\windows下。</p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg677093cb53fa.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>现在要做的就是真正意义上的第一步，归一化处理，这一步要做，希望不要为了简便不做，这样预测出来不准。具体在dos下调完路径后，执行下面两句，分别是归一化数据集和测试集后产生新的两个文件data和test。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg6770928adc4d.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>现在C:\libsvm-2.88\windows中多了两个文件，其实还有一个scale，不用管他，不起作用！</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg67709426dda8.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>把两个（其实一个就够了，data）新的数据集移动到C:\libsvm-2.88\python下（其实这一部大可不必，如果不移动两个文件的话，下面输入的语句应该为python C:\libsvm-2.88\python\gridregression.py -svmtrain C:\libsvm-2.88\windows\svm-train.exe -gnuplot C:\gnuplot\bin\pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 C:\libsvm-2.88\windows\data.txt &gt; gridregression_data.parameter其实就是data.txt的位置放的不一样而已；如果按照我下面的步骤来一定要做）。</p>
<p>现在是通过gridregression.py函数进行参数寻优，把路径调好，注意调到C:\libsvm-2.88\python下了。输入下面的语句，可能你要等很长时间，我的数据很多搞了一个晚上。</p>
<p>有天早上一个朋友说你昨晚这么晚回来，早上怎么7点就上线了啊qq，汗，电脑一夜跑这玩意儿。。。扯远了。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg677092d71ef6.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>训练完后，在C:\libsvm-2.88\python中会有一个gridregression_data.parameter文件，里面就是自动寻优的结果，主要也是为了这个东西，搞了我老半天nnd。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg6770c7d1aee1.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>打开它，下面最后一行分别为c,g,p,mse。其中mse没有用，其实这个值越小越好。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg6770c83abd9a.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>把刚才的3个参数用来进行训练svm模型。把路径重新调回C:\libsvm-2.88\windows，输入语句训练，会在C:\libsvm-2.88\windows里产生一个data.txt.model文件。训练好了紧接着对test文件预测，输入第二条语句，得出结果在out里面。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg677093237a5f.jpg" /></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg6770937f0e64.jpg" /></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg6770c7298c4f.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>最后打开out和test文件比较一下结果差多少，自己去计算咯。</p>
<p>&nbsp;<wbr></wbr></p>
<p><img alt="" src="http://pwwang.com/wp-content/uploads/2009/06/5980835eg677094825a6d.jpg" /></p>
<p>&nbsp;<wbr></wbr></p>
<p>到此已经实现了libsvm软件做回归预测的全过程</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/digest/%e7%94%a8libsvm%e5%81%9a%e5%9b%9e%e5%bd%92%e5%92%8c%e9%a2%84%e6%b5%8b%e7%9a%84%e6%ad%a5%e9%aa%a4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>libsvm-2.88中文文档/tools</title>
		<link>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3tools/</link>
		<comments>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3tools/#comments</comments>
		<pubDate>Tue, 05 May 2009 09:50:25 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[BIO]]></category>
		<category><![CDATA[SVM]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=613</guid>
		<description><![CDATA[&#160;

前面对libsvm-2.88目录下的README进行了部分翻译, 似乎需要的朋友比较多, 这下对tools目录下的README进行了翻译. 给需要的朋友.

&#160;这个目录中包括一些有用的程序:

<span class="readmore"><a href="http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3tools/" title="libsvm-2.88中文文档/tools">Read More: 2528 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>前面对<a target="_blank" href="http://pwwang.com/?p=256">libsvm-2.88目录下的README</a>进行了部分翻译, 似乎需要的朋友比较多, 这下对tools目录下的README进行了翻译. 给需要的朋友.</p>
<p>&nbsp;这个目录中包括一些有用的程序:<br />
1. 子集选择工具<br />
2. 参数选择工具<br />
3. LIBSVM格式检查工具</p>
<p><span id="more-613"></span></p>
<p><b>第一部分: 子集选择工具</b></p>
<p>介绍<br />
==============</p>
<p>训练大量的数据需要消耗大量的时间. 有时你需要先对一个小的子集进行训练. python脚本subset.py可以随机地选择一个特定数目的样本. 对于分类数据, 我们提供一个分层选择来保证相同的类在一个子集中.</p>
<p>用法: subset.py [options] dataset number [output1] [output2]</p>
<p>这个脚本从给定的数据集中选择一个子集.</p>
<p>选项:<br />
-s method: 选择的方式(默认 0)<br />
&nbsp;0 &#8212; 分层选择(只用于分类)<br />
&nbsp;1 &#8212; 随机选择<br />
&nbsp;<br />
output1: 子集(可选)<br />
output2: 余下的数据(可选)</p>
<p>如果output1未选, 那么子集将在屏幕上打印出来.</p>
<p>例子<br />
===============</p>
<p>&gt;python subset.py heart_scale 100 file1 file2</p>
<p>从heart_scale中随机选择100个样本保存到file1中,而剩余的实例保存到file2中.</p>
<p><b>第二部分: 参数选择工具</b></p>
<p>介绍<br />
===============</p>
<p>grid.py是一个参数选择工具, 这个工具是用于采用RBF(径向基函数)核的C-SVM分类的. 它采用CV(交叉验证)技术来估计特定范围内每一个联合参数的准确性并且帮助你选择一个适合你问题的最佳参数.</p>
<p>grid.py为交叉验证直接执行libsvm二进制文件(不需要python的结合)并且用gnuplot来画CV准确性的轮廓. 在使用之前, 你必须事先安装libsvm和gnuplot. gnuplot可以在这里下载: <a href="http://www.gnuplot.info/">http://www.gnuplot.info/</a></p>
<p>
在苹果系统中, 预编译的gnuplot文件需要Aquarterm库的支持, 这个库也需要安装. 另外, 这个版本的gnuplot不支持png, 所以你需要修改&quot;set term png transparent small&quot;并使用其他图片格式. 例如你可以设定为&quot;set term pbm small color&quot;.</p>
<p>用法: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [additional parameters for svm-train] dataset</p>
<p>这个程序处理v-fold交叉验证的时候采用的参数C(和gamma) = 2^begin, 2^(begin+step), &#8230;, 2^end.</p>
<p>你可以采用-svmtrain和-gnuplot参数来指定libsvm和gnuplot的位置.</p>
<p>对于windows用户, 请使用gnuplot.exe. 如果你正在使用gnuplot 3.7.1版本, 请升级到3.7.3或更高版本. 3.7.1有一个bug. 如果你使用的是windows下的<br />
cygwin, 请使用gunplot-x11.</p>
<p>例子<br />
===============</p>
<p>&gt; python grid.py -log2c -5,5,1 -log2g -4,0,1 -v 5 -m 300 heart_scale</p>
<p>用户(特别是MS Windows用户)可能需要指定可执行文件的路径. 你既可以在grid.py的开头修改路径,也可以在命令行中指定它们. 例如,</p>
<p>&gt; grid.py -log2c -5,5,1 -svmtrain c:\libsvm\windows\svm-train.exe -gnuplot c:\tmp\gnuplot\bin\pgnuplot.exe -v 10 heart_scale</p>
<p>Output: 两个文件<br />
dataset.png: gnuplot生成的CV准确性轮廓图<br />
dataset.out: 每一个(log2(C),log2(gamma))的CV准确性</p>
<p>并行网格搜索<br />
===============</p>
<p>把工作分离到一个共享相同文件系统的计算机集群, 你可以处理一个并行的网格搜索. 首先, 在grid.py中添加机器名字:</p>
<p>ssh_workers = [&quot;linux1&quot;, &quot;linux5&quot;, &quot;linux5&quot;]</p>
<p>然后设定你的ssh, 使得授权工作不需要询问密码.</p>
<p>如果一台机器有多个CPU或者更多的RAM, 相同的机器(例如这里的linux5)可以列出不只一次. 如果本地机器是最好的, 你也可以扩大nr_local_worker, 例如,</p>
<p>nr_local_worker = 2</p>
<p>例子:</p>
<p>&gt; python grid.py heart_scale<br />
[local] -1 -1 78.8889&nbsp; (best c=0.5, g=0.5, rate=78.8889)<br />
[linux5] -1 -7 83.3333&nbsp; (best c=0.5, g=0.0078125, rate=83.3333)<br />
[linux5] 5 -1 77.037&nbsp; (best c=0.5, g=0.0078125, rate=83.3333)<br />
[linux1] 5 -7 83.3333&nbsp; (best c=0.5, g=0.0078125, rate=83.3333)<br />
.<br />
.<br />
.</p>
<p>如果 -log2c, -log2g, 或 -v 没有指定, 则使用默认值.</p>
<p>如果你的系统使用telnet代替ssh, 你应该把你的机器名字在telnet_workers列出.</p>
<p><strong>第三部分: LIBSVM格式检查工具</strong></p>
<p>介绍<br />
=================</p>
<p>`svm-train&#8217;只是对输入数据进行简单的检查. 要做更详细的检查, 我们提供一个python脚本 `checkdata.py&#8217;.</p>
<p>用法: checkdata.py dataset</p>
<p>这个工具的作者是台湾大学的Rong-En Fan.</p>
<p>例子<br />
==================</p>
<p>&gt; cat bad_data<br />
1 3:1 2:4<br />
&gt; python checkdata.py bad_data<br />
line 1: feature indices must be in an ascending order, previous/current features 3:1 2:4<br />
Found 1 lines with error.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3tools/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>libsvm-2.88中文文档</title>
		<link>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3readme/</link>
		<comments>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3readme/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 08:48:50 +0000</pubDate>
		<dc:creator>pwwang</dc:creator>
				<category><![CDATA[BIO]]></category>
		<category><![CDATA[SVM]]></category>

		<guid isPermaLink="false">http://pwwang.com/?p=256</guid>
		<description><![CDATA[&#160;

最近的工作要用到支持向量机(SVM), 对算法不是很懂, 但是总要把用法弄明白吧, 于是就想把它的文档翻译一下, 自己弄明白吧, 也给其他人带来点方便

先给出libsvm的下载地址:&#160;&#160; 要下载就点我吧

<span class="readmore"><a href="http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3readme/" title="libsvm-2.88中文文档">Read More: 4902 Words Totally</a></span>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>最近的工作要用到支持向量机(SVM), 对算法不是很懂, 但是总要把用法弄明白吧, 于是就想把它的文档翻译一下, 自己弄明白吧, 也给其他人带来点方便</p>
<p>先给出libsvm的下载地址:&nbsp;&nbsp; <a target="_blank" href="http://pwwang.com/wp-content/uploads/2008/12/libsvm-2.88.rar">要下载就点我吧</a></p>
<p>英文文档请见压缩包内的 README 文件(用写字板打开就可以看到内容了)<span style="color: rgb(255,0,0)"><strong><br />
</strong></span></p>
<p>其中, tools目录下的README的翻译在<a target="_blank" href="http://pwwang.com/?p=613">这里</a>.</p>
<hr />
<p><span style="font-size: medium"><strong>libsvm-2.88中文文档</strong></span></p>
<p><span style="color: rgb(128,0,0)"><strong>中文文档由 pwwang 翻译, 欢迎转载, 转载请注明出处!</strong></span></p>
<p><span id="more-256"></span></p>
<p>&nbsp;</p>
<p>Libsvm是一个简单、易用、有效的SVM分类和回归软件。它解决了C-SVM分类、nu-SVM分类、one-class-SVM、epsilon-SVM回归和nu-SVM回归。它还为C-SVM提供了一个自动模型选择工具。这个文档将解释libsvm的用法。</p>
<p>Libsvm可以从这里得到：http://www.csie.ntu.edu.tw/~cjlin/libsvm<br />
在使用libsvm之前先阅读COPYRIGHT文件。</p>
<p><strong>目录</strong><br />
=================</p>
<p>－快速开始<br />
－安装和数据格式<br />
－&ldquo;svm-train&rdquo;的用法<br />
－&ldquo;svm-predict&rdquo;的用法<br />
－&ldquo;svm-scale&rdquo;的用法<br />
－实际使用技巧<br />
－例子<br />
（后面的部分不作翻译）</p>
<p>&nbsp;</p>
<p><strong>快速开始</strong><br />
=================</p>
<p>如果你是SVM的一个新手，并且数据不大，那么在安装完成之后请打开tools目录使用easy.py。它将把一切全自动化，从数据规化到参数选择。</p>
<p>用法：easy.py training_file [test_file]</p>
<p>你可以在&ldquo;tools/README&rdquo;中找到关于参数选择的更多信息。</p>
<p>&nbsp;</p>
<p><strong>安装和数据格式</strong><br />
=================</p>
<p>在Unix系统中，输入make来生成&ldquo;svm-train&rdquo;和&ldquo;svm-predict&rdquo;程序。不带参数地运行它们可以显示他们的用法。</p>
<p>在其他系统中，参考&ldquo;Makefile&rdquo;来生成它们（例如：你可以参数这篇文档中的&ldquo;生成Windows可执行文件&rdquo;）或者使用预生成二进制文件（Windows二进制文件在&rdquo;windows&ldquo;目录中）</p>
<p>训练和测试数据文件中的格式是：</p>
<p>&lt;label&gt; &lt;index1&gt;:&lt;value1&gt; &lt;index2&gt;:&lt;value2&gt; &#8230;<br />
.<br />
.<br />
.</p>
<p>每行包含一个实例，并且以&ldquo;n&rdquo;（译者注：换行符）结束。对于分类来说，&lt;label&gt;是一个指向该类标志的整数（支持多类）。对于回归来说，&lt;label&gt;是一个可为任何实数的目标值。对于one-class-SVM来说，它不会被用到，所以可以为任何数值。除非使用预先计算的核（将在另一节介绍），&lt;index&gt;:&lt;value&gt;给出了一个特性（属性）值。&lt;index&gt;是一个从1开始的整数，&lt;value&gt;是一个实数。索引必须按<strong>升序</strong>排列。标签在测试文件中只被用来计算精确度或者错误。如果它们是未知的，把第一列赋任意值。</p>
<p>这个包内的一个分类数据的例子是&ldquo;heart_scale&rdquo;。可以使用&ldquo;tools/checkdata.py&rdquo;来检测你数据格式是否正确。（详见&ldquo;tools/README&rdquo;）。</p>
<p>输入&ldquo;svm-train heart_scale&rdquo;，程序将读取训练数据并输出模型文件&ldquo;hear_scale.model&rdquo;。如果你有一个测试集叫&ldquo;heart_scale.t&rdquo;，那么输入&ldquo;svm-predict heart_scale.t heart_scale.model output&rdquo; 来检查预测的准确性。&ldquo;output&rdquo;文件包含了预测的类标签。</p>
<p>这个包里还有一些其他的有用的程序：</p>
<p>svm-scale：</p>
<p style="margin-left: 40px">规化你的输入数据文件</p>
<p>svm-toy：</p>
<p style="margin-left: 40px">这是一个简单的图形界面，它将在一个面板上显示SVM如果分离数据。你可以在窗口里单击来画数据点。使用&ldquo;change&rdquo;按钮来选择类1,2或者3（例如：一直到3个类都是支持的），&ldquo;load&rdquo;按钮用来从文件里装入数据，&ldquo;save&rdquo;按钮用来保存数据到一个文件，&ldquo;run&rdquo;按钮用来获取一个SVM模型，&ldquo;clear&rdquo;按钮用来清除窗口。</p>
<p style="margin-left: 40px">你可以窗口的底部输入选项，选项的符号规则和&ldquo;svm-train&rdquo;一样。</p>
<p style="margin-left: 40px">注意&ldquo;load&rdquo;和&ldquo;save&rdquo;只考虑了分类情况下的数据，而没有考虑回归的情况。每一个数据库有一个标签（颜色），它必须是1，2或者3，并且两个属性（x和y值）范围必须是[0，1]。</p>
<p style="margin-left: 40px">在各个目录中输入make来生成它们。</p>
<p style="margin-left: 40px">你需要Qt库来生成Qt版本（可以在这里得到：http://www.trolltech.com）</p>
<p style="margin-left: 40px">你需要GTK+库来生成GTK版本（可以在这里得到：http://www.gtk.org）</p>
<p style="margin-left: 40px">预生成的Windows二进制文件可&ldquo;Windows&rdquo;目录中。我们使用的是32-位机上的Visual C++，所以最大缓存是2GB。</p>
<p style="margin-left: 40px">&nbsp;</p>
<p><strong>&ldquo;svm-train&rdquo;的用法 </strong><br />
=================</p>
<p>用法：svm-train [options] training_set_file [model_file]<br />
选项：<br />
-s svm_type : 设定SVM的类型 (default 0)<br />
&nbsp;&nbsp;&nbsp; 0 &#8212; C-SVC<br />
&nbsp;&nbsp;&nbsp; 1 &#8212; nu-SVC<br />
&nbsp;&nbsp;&nbsp; 2 &#8212; one-class SVM<br />
&nbsp;&nbsp;&nbsp; 3 &#8212; epsilon-SVR<br />
&nbsp;&nbsp;&nbsp; 4 &#8212; nu-SVR<br />
-t kernel_type : 设定核函数的类型 (default 2)<br />
&nbsp;&nbsp;&nbsp; 0 &#8212; linear: u&#8217;*v<br />
&nbsp;&nbsp;&nbsp; 1 &#8212; polynomial: (gamma*u&#8217;*v + coef0)^degree<br />
&nbsp;&nbsp;&nbsp; 2 &#8212; radial basis function: exp(-gamma*|u-v|^2)<br />
&nbsp;&nbsp;&nbsp; 3 &#8212; sigmoid: tanh(gamma*u&#8217;*v + coef0)<br />
&nbsp;&nbsp;&nbsp; 4 &#8212; precomputed kernel (kernel values in training_set_file)<br />
-d degree : set degree in kernel function (default 3)<br />
-g gamma : set gamma in kernel function (default 1/k)<br />
-r coef0 : set coef0 in kernel function (default 0)<br />
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)<br />
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)<br />
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)<br />
-m cachesize : set cache memory size in MB (default 100)<br />
-e epsilon : set tolerance of termination criterion (default 0.001)<br />
-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)<br />
-b probability_estimates: whether to train an SVC or SVR model for probability estimates, 0 or 1 (default 0)<br />
-wi weight: set the parameter C of class i to weight*C in C-SVC (default 1)<br />
-v n: n-fold cross validation mode</p>
<p>-g中的k表示输入数据中属性的数目。</p>
<p>-v选项把数据随机分成n个部分，并计算它们的交叉验证accuracy/mean方差（不知道这个数学术语怎么翻译）</p>
<p>通过libsvm FAQ来查看输出文件的含义。</p>
<p>&nbsp;</p>
<p><strong>&ldquo;svm-predict&rdquo;的用法 </strong><br />
=================</p>
<p>用法： svm-predict [options] test_file model_file output_file<br />
选项：<br />
-b probability_estimates: 是否预测概率估计, 0 或 1 (默认 0); one-class SVM只支持0</p>
<p>model_file是svm-train生成的model文件.<br />
test_file 是你想预测的数据.<br />
svm-predict 将把结果输出到output_file.</p>
<p><strong>&quot;svm-scale&quot; Usage</strong><br />
=================</p>
<p>用法： svm-scale [options] data_filename<br />
选项：<br />
-l lower : x 规化的最小值 (默认 -1)<br />
-u upper : x 规化的最大值 (默认 +1)<br />
-y y_lower y_upper : y 规化的限定 (默认: 不规化y)<br />
-s save_filename : 保存规化参数到 save_filename<br />
-r restore_filename : 从restore_filename恢复规化参数</p>
<p>查看这个文档的&#8217;Examples&#8217; 来获取例子。</p>
<p>&nbsp;</p>
<p><strong>实际使用技巧</strong><br />
=================</p>
<p>* 你的数据的规化。例如，规化每一个属性到[0,1]或[-1,+1]。<br />
* 对于C-SVC，考虑使用tools目录中的模型选择工具。<br />
*&nbsp;nu in nu-SVC/one-class-SVM/nu-SVR approximates the fraction of training&nbsp; errors and support vectors.&nbsp;<br />
* 如果分类数据不平衡（如太多正数，极少负数），使用-wi尝试一个不同的罚分参数C。<br />
* 为大的问题指定更大的缓存大小（如 larger -m）</p>
<p>Examples<br />
========</p>
<p>&gt; svm-scale -l -1 -u 1 -s range train &gt; train.scale<br />
&gt; svm-scale -r range test &gt; test.scale</p>
<p>Scale each feature of the training data to be in [-1,1]. Scaling factors are stored in the file range and then used for scaling the test data.</p>
<p>&gt; svm-train -s 0 -c 5 -t 2 -g 0.5 -e 0.1 data_file</p>
<p>Train a classifier with RBF kernel exp(-0.5|u-v|^2), C=10, and stopping tolerance 0.1.</p>
<p>&gt; svm-train -s 3 -p 0.1 -t 0 data_file</p>
<p>Solve SVM regression with linear kernel u&#8217;v and epsilon=0.1 in the loss function.</p>
<p>&gt; svm-train -c 10 -w1 1 -w-1 5 data_file</p>
<p>Train a classifier with penalty 10 = 1 * 10 for class 1 and penalty 50 = 5 * 50 for class -1.</p>
<p>&gt; svm-train -s 0 -c 100 -g 0.1 -v 5 data_file</p>
<p>Do five-fold cross validation for the classifier using the parameters C = 100 and gamma = 0.1</p>
<p>&gt; svm-train -s 0 -b 1 data_file<br />
&gt; svm-predict -b 1 test_file data_file.model output_file</p>
<p>Obtain a model with probability information and predict test data with probability estimates</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://pwwang.com/technology/svm/libsvm-288%e4%b8%ad%e6%96%87%e6%96%87%e6%a1%a3readme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
