最近要用到支持向量機,就找了些資料試着在linux平臺下安裝。這裏python是3.3.2版,libsvm3.17.python
先把沒成功的方法寫下來:linux
下載對應的libsvm包,tar.gz
shell
解壓對應的壓縮包oop
打開終端,進入解壓後的目錄,用‘make’命令進行安裝測試
以後試了一下libsvm自帶的例子(./svm-train heart_scale)能夠正確運行,覺得安裝成功,但用readme中的例子寫一個py文件:spa
import os,sys.net
sys.path = [os.path.dirname(os.path.abspath(__file__))] + sys.pathblog
from svmutil import *hadoop
y,x=svm_read_problem('../heart_scale')get
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 <module>
from svmutil import *
File "/home/hadoop/libsvm3.17/libsvm-3.17/python/svmutil.py", line 5, in <module>
from svm import *
File "/home/hadoop/libsvm3.17/libsvm-3.17/python/svm.py", line 22, in <module>
raise Exception('LIBSVM library not found.')
說明libsvm並無安裝成功。
以後又嘗試了另外一個方法,轉自http://blog.csdn.net/rav009/article/details/12995095
安裝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:wget http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz (下載libsvm)
而後解壓
在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 "<pyshell#10>", line 1, in <module>
from svmutil import *
ImportError: No module named svmutil
仍是找不到對應模塊,我對python shell使用的很少,平時都是將py文件在終端編譯運行python程序,不知道這個錯誤是怎麼引發的。若是有大神不當心看見了,還望多多指教