libsvm svmtrain中的windows下svm-train 与 svm-scale 怎么打开

您的位置: >
> libsvm(SVM模式识别与回归的软件包) v3.22最新版
libsvm(SVM模式识别与回归的软件包) v3.22最新版
软件大小:775K
软件语言:简体中文
软件类型:国产软件
软件授权:共享软件
更新时间:
软件类别:程序源码
软件官网:http://www.csie.ntu.edu.tw
应用平台:Windows10, Windows8, Windows7, WinVista, WinXP
网友评分:6分
libsvm是由台湾大学林智仁(Lin Chih-Jen)教授开发的一款简单易用、快速有效的SVM模式识别与回归的软件包。这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。libsvm不但提供了编译好的可在Windows系列系统的执行文件,还提供了源代码,方便改进、修改以及在其它操作系统上应用;libsvm对SVM所涉及的参数调节相对比较少,提供了很多的默认参数,利用这些默认参数可以解决很多问题;并提供了交互检验(Cross Validation)的功能,可以解决C-SVM、ν-SVM、ε-SVR和ν-SVR等问题,包括基于一对一算法的多类模式识别问题。为了方便大家体验,多多小编为大家提供最新版的libsvm程序下载,该软件包以源代码和可执行文件两种方式给出的。如果是Windows系列操作系统,可以直接使用软件包提供的程序,也可以进行修改编译;如果是Unix类系统,必须自己编译,软件包中提供了编译格式文件,在SGI工作站(操作系统IRⅨ6.5)上,使用免费编译器GNU C++3.3编译通过,有需求的朋友请下载使用。libsvm软件包介绍下载软件压缩包,解压,可以看到libsvm可分为5个文件夹和一些c++源码文件,其详细说明如下:1、Java——主要是应用于java平台;2、Python——是用来参数优选的工具,稍后介绍;3、svm-toy——一个可视化的工具,用来展示训练数据和分类界面,里面是源码,其编译后的程序在windows文件夹下;4、tools——主要包含四个python文件,用来数据集抽样(subset),参数优选(grid),集成测试(easy),数据检查(checkdata);5、windows——包含libSVM四个exe程序包,我们所用的库就是他们,里面还有个heart_scale,是一个样本文件,可以用记事本打开,用来测试用的。6、其他.h和.cpp文件都是程序的源码,可以编译出相应的.exe文件。其中,最重要的是svm.h和svm.cpp文件,svm-predict.c、svm-scale.c和svm-train.c(还有一个svm-toy.c在svm-toy文件夹中)都是调用的这个文件中的接口函数,编译后就是windows下相应的四个exe程序。7、另外,里面的 README 跟 FAQ也是很好的文件,对于初学者如果E文过得去,可以看一下。libsvm在windows操作系统中使用教程把LibSVM包解压到相应的目录(因为只需要里面windows文件夹中的文件,所以可以只把windows文件夹拷到相应的目录即可)进入libsvm\windows,可以看到这几个exe文件:①svm-predict: svmpredict
output_file
依照已经train好的model ,输入新的数据,并输出预测新数据的类别。②svm-scale:有时候特征值的波动范围比较大需要对特征数据进行缩放,可以缩放到0--1之间(自己定义)。③svm-toy:似乎是图形界面,可以自己画点,产生数据等。④svm-train:svmtrain
train_file
[model_file]
train 会接受特定格式的输入,产生一个model 文件。1、可以自己生成数据,使用svm-toy:①双击svm-toy,点击change可以在画布上画点:②点击run。其实就是train的过程,划分的区域:③点击save可以保存数据。2、使用训练数据libsvm.txt进行建模,使用svm-train:①使用cmd命令进入到我们解压的libsvm目录中的windows目录,使用svm-train,如下:其中:#iter为迭代次数,nu 是你选择的核函数类型的参数,obj为SVM文件转换为的二次规划求解得到的最小值,rho为判决函数的偏置项b;nSV 为标准支持向量个数(0&a[i]&c);nBSV为边界上的支持向量个数(a[i]=c);Total nSV为支持向量总个数(对于两类来说,因为只有一个分类模型Total nSV = nSV,但是对于多类,这个是各个分类模型的nSV之和同时在该目录下会生成一个训练好的model(libsvm.txt.model)可以打开文件查看里面的内容,主要包括一些参数和支持向量等3、使用建好的model进行预测,使用svm-predict同时会生成一个输出文件(libsvm.txt.out),每行代表该行的预测值类别。libsvm参数优化1、svm的参数优化很重要,libsvm包里面包含了参数的优化函数,主要是暴力求解参数。一般来说我们会使用高斯核函数,包含两个参数(c 和 g)使用gird.py文件进行参数优化选择:grid.py在libsvm/tools里面,首先需要修改gird.py中的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:2、进入grid.py的相应目录,执行grid.py D://libsvm.txt3、前面两个分别是c 跟g的值,这时候我们重新训练模型(加上参数c g)4、可以看到,准确率有了显著的提升, 其实这些步骤完全可以使用easy.py进行实现,同理也需要修改eays.py里面的gnuplot文件路径问题,把文件里的路径改成gnuplot 存放的目录:
libsvm(SVM模式识别与回归的软件包) v3.22最新版
高速下载通道
其它下载地址
感谢您对多多软件站的信任,请把这份信任分享给您的朋友!
您的评论需要经过审核才能显示!
软件排行榜
63.8M / 英文 /5.9分
1.52M / 简体中文 /8分
3.27M / 简体中文 /6分
22.7M / 简体中文 /8.2分
19.4M / 简体中文 /4.3分
16.8M / 简体中文 /8.3分
6.6M / 简体中文 /8.6分
13.8M / 简体中文 /7.1分
6.76M / 简体中文 /7.9分
12.9M / 简体中文 /7.6分
Copyright (C)
. All rights reserved.libsvm学习(一) - bos274km - ITeye博客
博客分类:
libsvm学习(一)

  (记录下过程,以备使用的时候查阅)
  一、所需三个软件:
  python3.1.2 下载链接:http://www.python.org/ftp/python/3.1.2/
  libsvm2.9 下载链接:http://download.csdn.net/download/phoeni_seu/279;
  gnuplot软件&& 下载链接:http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/g/project/gn/gnuplot/gnuplot/4.2.3/
  python需要安装,其他两个解压即可使用。当然亦可以选择java、VC环境。
  二、一般过程
  LibSVM&& 使用的一般步骤是:&
  1& )按照& LIBSVM& 软件包所要求的格式准备数据集;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  2& )对数据进行简单的缩放操作;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  3& )首要考虑选用& RBF&& 核函数;&
  4& )采用交叉验证选择最佳参数& C& 与& g&& ;&
  5& )采用最佳参数& C& 与& g&& 对整个训练集进行训练获取支持向量机模型;&
  6& )利用获取的模型进行测试与预测。&
  三、注意事项
  1、LibSVM的输入有格式要求,可以按照格式要求编写程序实现,也可以参考http://download.csdn.net/detail/dadaadao/1571409  在excel中直接生成libsvm所用格式数据。
  2、配置
  修改easy.py和grid.py最上方两行有关libsvm、python和gnuplot的路径的代码。其中,svmpath 代表 svmscale.exe、svmtrain.exe 等可执行文件的路径,pythonpath 代表easy.py和grid.py等脚本文件路径,gnuplotpath 代表 pgnuplot.exe 的路径。
  这里,我把easy.py和grid.py复制到\libsvm-2.9\python下,然后修改这两个文件中的路径代码(记得用绝对路径,也可以设置成环境变量后使用相对路径),如下:
  //easy.py修改
  else:
  # example for windows
  svmscale_exe = r"d:\libsvm-2.9\windows\svm-scale.exe"
  svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
  svmpredict_exe = r"d:\libsvm-2.9\windows\svm-predict.exe"
  gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
  grid_py = r"d:\libsvm-2.9\python\grid.py"
  //grid.py修改
  else:
  # example for windows
  svmtrain_exe = r"d:\libsvm-2.9\windows\svm-train.exe"
  gnuplot_exe = r"d:\gnuplot\bin\pgnuplot.exe"
  四、至此环境算是搭好了,下面可以开始进行分类、回归、预测等试验。
  使用时,可以直接使用easy.py,或者手动进行,步骤如下:
  规范化训练样本、交叉验证寻找最合适参数、利用寻找到的参数进行模型训练、规范化测试样本、使用模型进行分类预测。
  刚开始接触,直接使用easy.py执行,
  命令行为:
  cmd
  cd d:\python31
  python d:\libsm-2.9\python\easy.py& d:\libsm-2.9\python\heart_scale
  回车执行,dos运行结果
  Scaling training data...
  Cross validation...
  Best c=2048.0, g=0.5 CV rate=84.0741
  Training...
  Output model: heart_scale.model
  执行后可以得到相应的结果,结果保存在python31目录下,产生了5个新文件train.libsvm.model(预测模型)、train.libsvm.range(缩放规则)、train.libsvm.scale(缩放结果)、train.libsvm.scale.out(规范化结果)、train.libsvm.scale.png(寻参图示)。
  解释下.modle中训练结果头部几个字段,
  svm_typec_svc&&&&&&&&&&&&&&&&&&& // 所选择的 svm 类型,默认为 c_svc
  kernel_typerbf&&&&&&&&&&&&&&&&&&&&& // 训练采用的核函数类型,此处为 RBF 核
  gamma0.279;1&&&&&&&&&&&&&&&&& //RBF 核的参数 γ
  nr_class2&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 类别数,此处为两分类问题
  total_sv103&&&&&&&&&&&&&&&&&&&&&&&& // 支持向量总个数
  rho1.6;&&&&&&&&&&&&&&&&&&&&&&&& // 判决函数的偏置项 b
  label 1-1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 原始文件中的类别标识
  nr_sv 51 52&&&&&&&&&&&&&&&&&&&&&&&&& // 每个类的支持向量机的个数
  SV&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 以下为各个类的权系数及相应的支持向量
  &&&&&&&&& ...........
  五、学习情况(待续)
  
  
浏览: 7456 次推荐这篇日记的豆列
&&&&&&&&&&&&libsvm使用步骤 - 夏鸥易 - 博客园
蜗牛漫步。。。我要一步一步往上爬。。。
一、Libsvm之初相识
1、libsvm简介(略)
&&Libsvm主要是用来模式识别与回归,这部分可以自己上网去看,在此略。
2、Libsvm、python、gnuplot下载
&&会不会奇怪为什么还要下载python和gnuplot这两个软件很重要,是后面搜索最优参数要用到的,也是很关键的一步。
我用的版本:libsvm-3.12,Python2.4,对于gnuplot,我用的是gp400win32.zip,下面是下载地址:
Libsvm-3.12:http://www.csie.ntu.edu.tw/~cjlin/(libsvm创始人台湾大学林智仁副教授个人主页)&
Python2.4:http://download.csdn.net/detail/linghu(这个是不要积分的)
gp400win32.zip:http://ishare..cn/f/.html?from=like
Gridregression.py:
将其复制到libsvm下的python2.4文件夹下。
将Libsvm-3.12和gp400win32.zip解压,这两个都不用安装。Python2.4要安装。下面是它们的路径(个人习惯,可以重命名文件或者对文件夹进行整理,以便后续运行):
Libsvm:G:\shukong下面(这里我将libsvm-3.12重命名为libsvm)
Python:G:\shukong\libsvm下面(python2.4重命名为python)记得将python下面的python.exe复制到libsvm下的tools中
gp400win32.zip:G:\shukong\libsvm下面(只保留了gnuplot这个文件夹)
3、环境变量的设置以及如何在DOS下寻找路径
1)环境变量的设置(不明白为什么要设置环境变量@_@,但为了避免后续出了问题不知怎么解决,还是设置了)
添加环境变量到path:右击“计算机(我的电脑)”-&属性-&高级系统设置-&高级-&环境变量-&系统变量列表里双击path在变量值最后添加“;G:\shukong\libsvm\windows”,这就对Libsvm环境变量设置好了,然后设置python环境变量,也和上面一样,在变量值最后添加“;G:\shukong\libsvm\tools”。如图1:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&
2)如何在DOS下寻找路径(这部分会的可以不用看,像我这种菜鸟,还是百度才知道的%&_&%)
&点击“开始”按钮,进入“命令提示符”,默认路径是“C:\User\acer&”。这里有两种情况:一是像我是放在G盘的,所以要将路径改为G盘,方法是:直接在命令提示符里输入“G:”然后回车,就进入G盘的根目录了。如图2:
&&&&&&&&&&&&&&&&&
&&&&&&还有就是虽然在C盘,但是不在“C:\User\acer&”,这时就先要进入C盘的根目录,方法如下:在命令提示符下输入“cd\”然后回车即可。如图3:
&&&&&&&&&&&&&&&&
以上两种情况,进入根目录以后,我们就可以进入libsvm的路径,在这里,我们先进入“G:\shukong\libsvm&”(只是我自己在G盘,你要根据自己实际路径进入),方法如下:
&& 在命令提示符中输入“cd&shukong”,然后回车,再输入“cd&libsvm”然后回车即可。如图4:
&&&&&&&&&&&&&&&&&&&&
二、Libsvm之再体验
怎么样,初相识还不是很难的吧,下面个人感觉就有点麻烦了。大家耐心哈。
1、将原始数据改为libsvm所规定的数据格式。
该软件使用的训练数据和检验数据文件格式如下:
&&&&[label]&[index1]:[value1]&[index2]:[value2]&…
&&&&&&&目标值&第一维特征编号:第一维特征值&第二维特征编号:第二维特征值…
例如:2.3&1:5.6&2:3.2&
表示训练用的特征有两维,第一维是5.6,第二维是3.2,目标值是2.3&
原始数据改为libsvm所规定的数据格式有2种方法:
1)使用网络上FormatDataLibsvm.xls来完成(我的excel版本不支持宏命令,所以此种方法没有用)。&
FormatDataLibsvm.xls使用说明:&
a.&先将数据按照下列格式存放(注意label放最后面):&
value1&value2&…&label&
value1&value2&…&label&
value1&value2&…&label
b.&然后将以上数据粘贴到FormatDataLibsvm.xls中的最左上角单元格,接着工具-&宏-&执行FormatDataToLibsvm宏。就可以得到libsvm要求的数据格式。
2)采用编程实现
a.&先将数据按照下列格式存放(注意label放最后面):&
value1&value2&…&label&
value1&value2&…&label&
value1&value2&…&label
b.本人使用的是简单的matlab编程来实现(以下是本人部分数据)
原数据(data1.txt)如图5:
&&&&&&&&&&&&&&&&&&&&&&&
转换之后的数据(svmdata1.txt)如图6:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
用matlab进行数据转换之后,把svmdata1.txt复制到libsvm文件夹下的tools文件夹即可。
3)数据格式转换好了,那么在libsvm的tools文件夹下还有一个工具,可以用来检查你的数据格式是否正确,那就是checkdata.py。方法是:
打开&命令提示符&,进入到libsvm中的tools文件夹下,(怎么样进入我已在上面介绍过),然后输入命令“checkdata.py&svmdata1.txt”回车,若显示“No&error”,则表示数据格式正确。我的数据结果如图7。(注:如果用这个matlab程序转换的话,一定是no&error的。^_^)
&&&&&&&&&&&&&&& &&&
这一步一般不会有太大的问题。
2、用svm-scale.exe对数据集进行归一化处理。
因为原始数据可能范围过大或过小,&svmscale可以先将数据重新scale&(縮放)&到适当范围使训练与预测速度更快。通常将数据缩放至[-1,1]或者[0,1]之间。
使用方法:svm-scale.exe&[-l&lower]&[-u&upper]&[-y&y_lower&y_upper]&[-s&save_name]&[-r&store_name]&filename;其中
&&&&-l:数据下限标记;
lower:缩放后数据下限&缺省值:&lower&=&-1;
-u:数据上限标记;
upper:缺省值:&upper&=&&1,代表着没有对y进行缩放;
-y:是否对目标值同时进行缩放;
y_lower:为下限值;
y_upper:为上限值;(回归需要对目标进行缩放,因此该参数可以设定为&–y&-1&1&);
-s&save_name:表示将缩放的规则保存为文件save_name;
-r&store_name:表示将缩放规则文件store_name载入后按此缩放;&
filename:待缩放的数据文件(要求满足前面所述的格式)。
在进行这一步的时候,我们要用到的数据是上一步已经改好格式的数据,即svmdata1.txt,所以要把svmdata1.txt复制到libsvm中的windows文件夹下。
具体操作,打开“命令提示符”,进入libsvm中的windows下,输入命令“svm-scale.exe&-l&0&-u&1&svmdata1.txt&data.txt”。如图8。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这里,我们把svmdata1.txt里面的数据缩放为[0,1]之间,并另存为data.txt,这时,在windows下面会多出一个data.txt,里面就是你要的数据。我没有保存规则,就不用-s。这里也有几个问题:
a.请看下图9:
&&&&&&&&&&&&&&&&&&&&&&&
和上图对比,感觉输入的命令是一样的,但是却提示错误,打开data.txt却并没有数据,却是英文的svm-scale的用法,刚开始,一直这样,我痛苦死了,后来仔细一看才明白,原来那个是英文的‘l’而我写的是数字‘1’,这样一改就好了。图10:
&&&&&&&&&&&
归一化后的数据如图11:
可以看到前几行索引没有‘3’,这是因为索引为‘3’的value是0,所以为了节省内存,就不显示了,这并不是错误,不要担心。
3、用gridregression.py搜索最优参数,主要是c和g。
数据都准备好了之后,就可以用svm-train来训练模型了,然而,了解svm-train的都知道,训练的时候又很多的参数,而这些参数又不能随便选,会有最优的,但是人工去选的话,会很麻烦,我看好多人都说用libsvm自带的grid.py进行参数的搜索,但是我查了,也实践了,好像grid.py不支持回归的,于是我用gridregression.py来搜索最优参数。
有关gridregression.py的下载,在第一步已经说了,不在赘述。先打开gridregression.py,注意用Eidt&with&IDLE打开,然后里面有些参数要改一下。
改前如图12:
&&&&&&& &&
改后如图13:
其实要改的就这些,主要是把svmtain_exe和gnuplot_exe的路径改为自己的路径就行。
然后就可以进行寻优了。要先把路径调好,注意调到G:\shukong\libsvm\python2.4下。
然后输入下面的语句:python&G:\shukong\libsvm\python2.4\gridregression.py&-svmtain&G:\shukong\libsvm\windows\svm-train.exe&-gnuplot&G:\shukong\libsvm\gnuplot\bin\pgnuplot.exe&-log2c&-10,10,1&-log2g&-10,10,1&-log2p&-10,10,1&-v&10&-s&3&-t&2&G:\shukong\libsvm\tools\data.txt如图14:
这个比较多字母,容易输错,我是在worrd文档里键入,然后复制到命令提示符中,回车,就开始跑了,在命令提示符窗口中看到运行过程。过程可能会比较长,我的数据少,很快就有结果了。
另:我在网上看的,如果输入python&G:\shukong\libsvm\python2.4\gridregression.py&-svmtain&G:\shukong\libsvm\windows\svm-train.exe&-gnuplot&G:\shukong\libsvm\gnuplot\bin\pgnuplot.exe&-log2c&-10,10,1&-log2g&-10,10,1&-log2p&-10,10,1&-v&10&-s&3&-t&2&G:\shukong\libsvm\tools\data.txt&gridregression_data.parameter比上面的输入多了最后的“&gridregression_data.parameter”,表示将结果保存在gridregression_data.parameter中,会在python文件夹中多出一个gridregression_data.parameter文件,但是在命令提示符中不会看到运行过程,这种方法我也尝试了,但是时间会非常长,大概花了4个小时,而且网上用这个方法的人也是运行了大概24小时,还是没结束,所以,还是不要保存为好,用上面的输入就行。寻优结果如图15:
&可以看到寻优的过程,只需关注最后一行即可。最后一行分别为c,g,p,mse,一般来说mse这个参数不是很重要,是越小越好吧(至于为什么是越小越好,我也不清楚哇~~)。
4、用svm-train训练模型。
svmtrain我们在前面已经接触过,他主要实现对训练数据集的训练,并可以获得SVM模型。
&&&&&&&&用法:&svmtrain&[options]&training_set_file&[model_file]
其中,options为操作参数,至于参数的可的选项及表示的涵义,大家可以在livbsvm中自带的readme里面看得到,很详细,不再赘述。这里只介绍我所选择的参数及其值。
打开命令提示符,进入G:\shukong\libsvm\windows然后输入“svm-train&-s&3&-t&2&-c&1024.0&-g&4&.0&-p&0.0625&data.txt”,这里-s是选择SVM的类型。对于回归来说,只能选3或者4,3表示epsilon-support&vector&regression,&4表示nu-support&vector&regression。-t是选择核函数,通常选用RBF核函数。然后c,g,p我们已经寻出,直接运行即可。如图16:
#iter&为迭代次数,&nu&与前面的操作参数&-n&n&相同,&obj&为&SVM&文件
转换为的二次规划求解得到的最小值,&rho&为判决函数的常数项&b&,&nSV&为支持
向量个数,&nBSV&为边界上的支持向量个数,&Total&nSV&为支持向量总个数。
这时在windows中会生成一个data.txt.model文件。可以用来进行下面的预测了。
5、用svm-predict预测。
vmpredict&是根据训练获得的模型,对数据集合进行预测。
&&&用法:svmpredict&[options]&test_file&model_file&output_file
&&&其中,options为操作参数,可用的选项即表示的涵义如下所示:
-b&probability_estimates——是否需要进行概率估计预测,可选值为0&或者1,默认值为0。
model_file&——是由svmtrain&产生的模型文件;
test_file——&是要进行预测的数据文件,格式也要符合libsvm格式,即使不知道label的值,也要任意填一个,svmpredict会在output_file中给出正确的label结果,如果知道label的值,就会输出正确率;
output_file&——是svmpredict&的输出文件,表示预测的结果值。
还是在命令提示符windows下输入“svm-predict&&test.txt&&data.txt.model&out.txt”,如图17:
&可以看到,第一行是均差,第二行是相关系数,预测结果还是不错的。如果预测结果不好,一可能是你的参数选择不当,还可能是你的特征值选择的有问题。
另外,在windows下会生成一个out.txt文件,可以打开看一下和test.txt文件的差别。
这里面有一些是需要注意改正的地方:
这几个压缩包,最好和博客上说明的版本号一样,不然在gridregression.py调用时会出项语法问题。搜索最优参数时,gridregression.py中的路径必须和cmd命令行中的严格一致。因为路径下有文件夹名字program
files,文件夹名字中间有空格的话,识别不到,所以创建一个镜像,例如在cmd中输入 subst w: &D:\program files& 然后可以直接用w:\代替D:\program files了。所以,在gridregression.py文件中,所有的D:\program
files也要用w:来表示。开始时没有对应,出现了worker local quit的错误。worker local quit的原因是数据文件为空,或者数据文件太大,出现内存溢出。
有两个博文可以值得学习:
阅读(...) 评论()【转载】使用windows版LIBSVM进行分类预测的具体方法及案例
1. 程序介绍和环境设置
windows下的libsvm是在命令行运行的Console
Program。所以其运行都是在windows的命令行提示符窗口运行(运行,输入cmd)。运行主要用到的程序,由如下内容组成:
libsvm-2.9/windows/文件夹中的:
svm-train.exe
svm-predict.exe
svm-scale.exe
libsvm-2.9/windows/文件夹中的:
checkdata.py
svm-toy.exe,我暂时知道的是用于演示svm分类。其中的load按钮的功能,是否能直接载入数据并进行分类还不清楚,尝试没有成功;
python文件夹及其中的svmc.pyd,暂时不清楚功能。
因为程序运行要用到python脚本用来寻找参数,使用gnuplot来绘制图形。所以,需要安装python和Gnuplot。
(Python&& v3.1
Final可从此下载:)
(gnuplot可从其官网下载:)
为了方便,将gnuplot的bin、libsvm-2.9/windows/加入到系统的path中,如下:
这样,可以方便的从命令行的任何位置调用gnuplot和libsvm的可执行程序,如下调用svm-train.exe:
出现svm-train程序中的帮助提示,说明path配置成功。
至此,libsvm运行的环境配置完成。下面将通过实例讲解如何使用libsvm进行分类。
2. 使用libsvm进行分类预测
我们所使用的数据为UCI的iris数据集,将其类别标识换为1、2、3。然后,取3/5作为训练样本,2/5作为测试样本。使用论坛中“将UCI数据转变为LIBSVM使用数据格式的程序”一文将其转换为libsvm所用格式,如下:
训练文件tra_iris.txt
1 1:5.4 2:3.4 3:1.7 4:0.2
1 1:5.1 2:3.7 3:1.5 4:0.4
1 1:4.6 2:3.6 3:1 4:0.2
1 1:5.1 2:3.3 3:1.7 4:0.5
1 1:4.8 2:3.4 3:1.9 4:0.2
2 1:5.9 2:3.2 3:4.8 4:1.8
2 1:6.1 2:2.8 3:4 4:1.3
2 1:6.3 2:2.5 3:4.9 4:1.5
2 1:6.1 2:2.8 3:4.7 4:1.2
2 1:6.4 2:2.9 3:4.3 4:1.3
3 1:6.9 2:3.2 3:5.7 4:2.3
3 1:5.6 2:2.8 3:4.9 4:2
3 1:7.7 2:2.8 3:6.7 4:2
3 1:6.3 2:2.7 3:4.9 4:1.8
3 1:6.7 2:3.3 3:5.7 4:2.1
3 1:7.2 2:3.2 3:6 4:1.8
测试文件tes_iris.txt
1 1:5.1 2:3.5 3:1.4 4:0.2
1 1:4.9 2:3 3:1.4 4:0.2
1 1:4.7 2:3.2 3:1.3 4:0.2
1 1:4.6 2:3.1 3:1.5 4:0.2
1 1:5 2:3.6 3:1.4 4:0.2
1 1:5.4 2:3.9 3:1.7 4:0.4
2 1:7 2:3.2 3:4.7 4:1.4
2 1:6.4 2:3.2 3:4.5 4:1.5
2 1:6.9 2:3.1 3:4.9 4:1.5
2 1:5.5 2:2.3 3:4 4:1.3
2 1:6.5 2:2.8 3:4.6 4:1.5
3 1:6.3 2:3.3 3:6 4:2.5
3 1:5.8 2:2.7 3:5.1 4:1.9
3 1:7.1 2:3 3:5.9 4:2.1
3 1:6.3 2:2.9 3:5.6 4:1.8
3 1:6.5 2:3 3:5.8 4:2.2
libsvm的参数选择一直是令人头痛的问题。不过,对于初学者,如果数据不是很大,在libsvm的tools文件中为大家提供了easy.py。它可以自动完成从归一化到参数选择的一切所需操作。
使用方法为:easy.py training_file [testing_file]
另外有其他参数选择工具,可以参考tools中的readme说明。下面,我们先使用easy.py进行分类实验。
(1)使用libsvm进行多分类——利用easy.py工具
在使用前,要确保上面环境变量已经配置。然后将tra_iris.txt、tes_iris.txt拷贝到tools文件夹,以防止写长路径名。同时,因为gnuplot的安装路径人人都不相同,所以,需要在easy.py中做相应修改,如下将
&&& # example
for windows
svmscale_exe = r"..\windows\svm-scale.exe"
svmtrain_exe = r"..\windows\svm-train.exe"
svmpredict_exe = r"..\windows\svm-predict.exe"
gnuplot_exe = r"D:\greensoft\gnuplot\bin\pgnuplot.exe"
r".\grid.py"中D:\greensoft\gnuplot\bin\pgnuplot.exe,改为你的pgnuplot.exe所在位置。
在“交叉验证寻找最优参数”之前,需要在grid.py中:
&& # example for windows
&& svmtrain_exe =
r"..\windows\svm-train.exe"
&& gnuplot_exe = r"G:\Program
Files\gnuplot\bin\pgnuplot.exe"其中的"G:\Program
Files\gnuplot\bin\pgnuplot.exe"改为你的pgnuplot.exe所在的路径。】
接着,“运行”中输入cmd打开命令行,转到\libsvm-2.9\tools所在目录,然后,输入命令
easy.py svmtra_iris.txt
svmtes_iris.txt执行,程序会自动调用训练、交叉验证、预测将结果保存到同目录的文件中。运行情况如下:
程序自动寻参情况图示如下:
程序执行的结果在svmtes_iris.txt.predict文件中,规范化结果在svmtra_iris.txt.scale.out中。从运行情况可看出,其预测精度为Accuracy
= 96.6667% (58/60)。
实验数据和结果见附件:
( 09:58:34, Size: 9.34 KB, Downloads: 71)
(2)对应上实验,手动使用libsvm进行多分类的方法
下面方法是通过分析easy.py所得,均在“运行”cmd命令行执行。
规范化训练样本
svm-scale -s svmtra_iris.txt.range svmtra_iris.txt &
svmtra_iris.txt.scale交叉验证寻找最优参数
grid.py -svmtrain svm-train -gnuplot gnuplot
svmtra_iris.txt.scale利用寻找的参数训练模型
svm-train -c 8.0 -g 0.03125 svmtra_iris.txt.scale
svmtra_iris.txt.model规范化测试样本
svm-scale -r svmtra_iris.txt.range svmtes_iris.txt &
svmtes_iris.txt.scale使用模型进行分类预测
svm-predict svmtes_iris.txt.scale svmtra_iris.txt.model
svmtes_iris.txt.predictsvm-train、svm-scale、svm-predict等名字为windows文件夹中exe文件的名字。
至此,使用libsvm进行分类的完整过程分析介绍,欢迎讨论。
转载请注:jink2005
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 libsvm svmtrain 参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信