想了解一下支持向量机这个东西,网上查阅后发现湾湾的libsvm倍受好评,于是赶紧下载下来。由于版本的原因的,根据网上搜索到的配置方法,都不能顺利启动,各种报错。后经不断尝试修改,终于搞定。具体过程如下:
ps:使用环境为win7 x64
1、下载相关软件。
- python3.2,安装目录:d:/Python32
- libsvm3.17,安装目录:D:\libsvm-3.17
- gp460win32,安装目录:D:\gnuplot
2、将D:\libsvm-3.17\tools文件夹下的easy.py和grid.py两个文件复制到D:\libsvm-3.17\Python\目录下
3、用任意编辑器打开新复制过来的这两个文件,做如下修改:
easy.py:
1、头部加入import subprocess
2、配置libsvm、gnuplot相关参数,设置好的内容如下:
3、将程序中所有Popen改为subprocess.Popen, 所有PIPE改为subprocess.PIPEif not is_win32: # 这部分不用改动 svmscale_exe = "../svm-scale" svmtrain_exe = "../svm-train" svmpredict_exe = "../svm-predict" grid_py = "./grid.py" gnuplot_exe = "/usr/bin/gnuplot" else: #这部分需要修改: # example for windows svmscale_exe = "D:/libsvm-3.17/windows/svm-scale.exe" svmtrain_exe = "D:/libsvm-3.17/windows/svm-train.exe" svmpredict_exe ="D:/libsvm-3.17/windows/svm-predict.exe" gnuplot_exe = "D:/gnuplot/bin/pgnuplot.exe" grid_py = "D:/libsvm-3.17/python/grid.py"
grid.py:
1、头部加入import subprocess
2、配置libsvm、gnuplot相关参数,设置好的内容如下:
3、将程序中所有Popen改为subprocess.Popen, 所有PIPE改为subprocess.PIPEif sys.platform != 'win32': #这部分不用改 self.svmtrain_pathname = os.path.join(dirname, '../svm-train') self.gnuplot_pathname = 'D:/libsvm/gnuplot' else: #以下程序段需要改: # example for windows self.svmtrain_pathname = os.path.join(dirname, r'D:/libsvm-3.17/windows/svm-train.exe') # svmtrain_pathname = r'c:\Program Files\libsvm\windows\svm-train.exe' self.gnuplot_pathname = r'D:/gnuplot/bin/pgnuplot.exe'
4、使用libsvm中自带的数据进行测试
下载官方测试数据集:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/data/,比如可以下载train.1, test.1,将其下载到D:/libsvm-3.17/python/目录下。
使用cmd打开此处,使用命令调用程序进行测试:
D:\libsvm-3.17\python>python easy.py train.1 test.1
执行过程如下:
其间还有会有动态变化的统计图表弹出: