1.下载压缩包,压缩包解压后,有几个有用的东西,python中的svm.py和svmutil.py,tools中的四个文件(easy.py,grid.py,subset.py,checkdata.py)还有外面的makefile与几个c源文件。这几个文件用来生成可执行文件的呦。直接在该文件的目录下执行make就可以生成三个可执行文件。
这时会提示出错:无g++的话,就要先在安装g++,apt-get install g++
所有都搞定后,拷贝生成的三个可执行文件,tools中的文件,python中的文件去一个新的工程文件夹,我们要开始创建工程啦
2先编写代码搞定数据啦,这个跟网上其他的数据差不多啦,我们编写的代码中需要传入的数据格式是两个list,分别为label的list和训练数据形成的list。另外训练g和c参数时候调用grid。py时需要的数据为label index:data index :data \n这样的文件。这里的index是从1开始的哦,从0考试会返回错误:找不到rate。总之数据的收集自己根据需要写啦,也可以从网上找一些测试数据
3训练参数g与c,这个就是调用grid.py这个代码啦,
但是grid.py代码里面有个文件,是那四个可执行文件的地址啦,这个需要改一下,因为我们把文件都移出来了嘛
if sys.platform != 'win32':
21 self.svmtrain_pathname ='/home/bond/python/svm/svm-train'
这个地址就是直接写上你的生成的svm-train可执行文件的地址啦
训练方法 执行python grid.py 文件名 该文件就是上面收集的按那种index顺序排列的数据的文件啦,这时会返回最佳的g与c哦
4编写代码,训练数据,返回成功率啦,我贴上我的代码好了
1 from svmutil import *
2 from svmfunc import *
3
4 #wordset,wordlist=getfile('sample.positive.txt','sample.negative.txt')
5 #gettestfile('test.label.cn.txt',wordset,wordlist)
6
7
8 wordmat,label,wordlist,wordset=getlist('sample.positive.txt','sample.negativ e.txt')
9 print 'svm_problem'
10 prob=svm_problem(label,wordmat)
11 print 'svm_parameter'
12 param=svm_parameter('-t 2 -s 2 -c 32.0 -g 0.0078125')
13 print 'svm_train'
14 m=svm_train(prob,param)
15 print 'gettestinfo'
16 linelist,labellist=gettest('test.label.cn.txt',wordset,wordlist)
17 print 'svm_predict'
18 res=svm_predict(labellist,linelist,m)
19 print 'svm_save_model'
20 svm_save_model('Model_Face',m)