最近要用到支持向量机,就找了些资料试着在linux平台下安装。这里python是3.3.2版,libsvm3.17.
先把没成功的方法写下来:
下载对应的libsvm包,tar.gz
解压对应的压缩包
打开终端,进入解压后的目录,用‘make’命令进行安装
之后试了一下libsvm自带的例子(./svm-train heart_scale)可以正确运行,以为安装成功,但用readme中的例子写一个py文件:
import os,sys
sys.path = [os.path.dirname(os.path.abspath(__file__))] + sys.path
from svmutil import *
y,x=svm_read_problem('../heart_scale')
m=svm_train(y[:200],x[:200],'-c 4')
p_label,p_acc,p_val=svm_predict(y[:200],x[:200],m)
print("p_label:"+p_label+" p_acc:"+p_acc+" p_val:"+p_val)
却得到这样的报错:
Traceback (most recent call last):
File "test.py", line 5, in
from svmutil import *
File "/home/hadoop/libsvm3.17/libsvm-3.17/python/svmutil.py", line 5, in
from svm import *
File "/home/hadoop/libsvm3.17/libsvm-3.17/python/svm.py", line 22, in
raise Exception('LIBSVM library not found.')
说明libsvm并没有安装成功。
安装gnuplot:sudo apt-get install libx11-dev
wget http://nchc.dl.sourceforge.net/project/gnuplot/gnuplot/4.6.rc1/gnuplot-4.6.rc1.tar.gz (下载gnuplot)
tar xzvf gnuplot-4.6.rc1.tar.gz (解压)
cd gnuplot-4.6.rc1 (进入目录)
./configure
make
sudo make install
然后解压
在libsvm的tools文件夹下找到 easy.py 和 grid.py 两个文件。把其中 gnuplot 的路径设置好。注意gnuplot的pathname不是解压的那个目录,而是要用 which gnuplot 命令来找出。最后执行在libsvm的文件夹下执行make命令,在子目录python下执行make命令。
用这种方法安装之后,又用之前测试的py文件编译运行了一下,这次没有错误,可以得到结果。但还有一个问题,就是直接在python shell中使用libsvm的时候还是会有错误:
>>> from svmutil import *
Traceback (most recent call last):
File "", line 1, in
from svmutil import *
ImportError: No module named svmutil
还是找不到对应模块,我对python shell使用的不多,平时都是将py文件在终端编译运行python程序,不知道这个错误是怎么引起的。如果有大神不小心看见了,还望多多指教