1. 程式人生 > >林智仁LIBSVM python包的安裝與使用

林智仁LIBSVM python包的安裝與使用

一、下載並安裝Python安裝包
從python官網上下載windows下的安裝包python-2.7.3.msi並安裝

二、檢查本地電腦是32位機還是64位機
開啟IDL
E(python GUI),輸入
>>>import sys
>>> sys.version
32位機將出現字元:‘2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]’
64位機將出現字元:‘2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)]' 
三、下載
LIBSVM並安裝Python版 

2.解壓libsvm-3.20.zip,你將會看到如圖1所示的目錄結構。
 圖片
圖1  
LIBSVM包結構 3.安裝python版libsvm包
(1)32位機:
    1)將windows資料夾中找到動態連結庫libsvm.dll,將其新增到系統目錄,如`C:\WINDOWS\system32\’。

    2)將上圖中python目錄下的svm.py與svmutil.py複製到自己需要開發的工程目錄下面。當然,也可以將其拷貝到系統安裝的python包目錄下,如(D:\Anaconda\Lib\site-packages\svm),然後配置python的環境變數,如下圖:

然後重啟電腦,就能保證後面引用svmutil包時不會出錯。     3)在需要使用SVM包的Python檔案中通過“from svmutil import *”引入SVM模組介面。
(2)64位機:(稍微複雜點,需要自己編譯64位的動態連結庫libsvm.dll,因為自帶的是32的.dll
    1)需要
Microsoft Visual Studio(VS)開發環境。如果沒有可以自己安裝,也可以到別人Windows 64位機器上使用已安裝的VS。(我這裡安裝的是VS 2010)
    2)
在程式列表中的Microsoft Visual Studio 2010/Visual Studio Tools下找到Visual Studio x64 Win64 Command Prompt(2010)(注意一定要是64位的command prompt),雙擊該Command Prompt將會彈出命令列視窗,如圖2所示。

    3)通過cd命令進入到LIBSVM所在資料夾libsvm-3.20。
    4)
輸入nmake -f Makefile.win clean all。這時libsvm-3.16的windows目錄下將生成64位的動態連結庫。至此,前面這個四個步驟如圖2所示。
圖2  
Visual Studio x64 Win64 Command Prompt(2010)命令視窗
    5)再進行“(1)32位機”中所述的操作即可完成python版libsvm包的安裝使用。 4.python版libsvm包的測試使用    (1)輸入測試程式碼:
    >>> 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)
    (2)測試程式碼執行結果輸出:
    optimization finished, #iter = 257     nu = 0.351161     obj = -225.628984, rho = 0.636110     nSV = 91, nBSV = 49     Total nSV = 91     Accuracy = 84.2857% (59/70) (classification) 5.python版libsvm包部分介面說明
    在libsvm-3.16的python資料夾下主要包括了兩個檔案svm.py和svmutil.py。
    svmutil.py介面主要包括了high-level的函式,這些函式的使用和LIBSVM的MATLAB介面大體類似。svmutil中主要包含了以下幾個函式:
    svm_train()  : train an SVM model
    svm_predict()  : predict testing data
    svm_read_problem() : read the data from a LIBSVM-format file.
    svm_load_model()   : load a LIBSVM model.
    svm_save_model()   : save model to a file.
    evaluations()  : evaluate prediction results.
    svm.py介面主要包括了一些low-level的應用。在svm.py中採用了python內建的ctypes庫,由此python可以直接訪問svm.h中定義的C結構和介面函式。svm.py主要運用了四個資料結構svm_node, svm_problem, svm_parameter和svm_model。