1. 程式人生 > >LibSVM3.21使用筆記----for python3.4 配置

LibSVM3.21使用筆記----for python3.4 配置

    需要使用SVM做一個文字分類的專案,因此決定使用libsvm3.21,在win64上訓練模型,android上做prediction分類,此文是為下次配置指導,防止本機doc丟失。

  1. 安裝python (使用python3.4)

  2. 執行“cmd”,直接輸入python,檢視python32位還是64

    (2.1)python32位的,則在libsvm-3.21資料夾下的windows資料夾中找到動態連結庫libsvm.dll,將其新增到系統目錄,如`C:\WINDOWS\system32\’,即可在python中使用libsvm

    (2.2)python64位的,則需要首先自己編譯

    64位的動態連結庫libsvm.dll。方法如下:

    在程式列表中的Microsoft Visual Studio 2012/Visual Studio Tools下開啟VS2012 x64Cross ToolsCommand Prompt,注意一定要是64位的command prompt

    (此時,可能會遇到一個error:"ERROR Cannot determine the location of the VS CommonTools Folder" 若是win7 64位系統,安裝的是VS2012,解決此問題的方法是:在計算機環境變數中變數PATH新增c:\windows\system32,本人win10 64沒有遇到此問題)

  3. DosLIBSVM所在資料夾libsvm-3.21

    輸入nmake -f Makefile.win clean all

    這時libsvm-3.21 windows目錄下將生成64位的動態連結庫。將新生成的libsvm.dll複製到系統目錄(例如`C:\WINDOWS\system32\')即可。

  4. 測試

    開啟IDLE

    >>>from sys import path

    >>> path.append('D:\LIBSVM\libsvm-3.21\python')

    >>> 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)

  5. Accuracy = 84.2857% (59/70)(classification)

    搞定...

  6. Notes: svm_predict(datalabel, dataset, model)中datalabel and dataset至少得是list型別,不能是單值,因此如果是單個值的,需要轉為matrix,例如對單個值x, y,應寫成 svm_predict([y], [x], model)