LibSVM3.21使用筆記----for python3.4 配置
需要使用SVM做一個文字分類的專案,因此決定使用libsvm3.21,在win64上訓練模型,android上做prediction分類,此文是為下次配置指導,防止本機doc丟失。
-
安裝python (使用python3.4)
-
執行“cmd”,直接輸入python,檢視python是32位還是64位
(2.1)若python是32位的,則在libsvm-3.21資料夾下的windows資料夾中找到動態連結庫libsvm.dll,將其新增到系統目錄,如`C:\WINDOWS\system32\’,即可在python中使用libsvm
(2.2)若python是64位的,則需要首先自己編譯
在程式列表中的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沒有遇到此問題)
-
Dos到LIBSVM所在資料夾libsvm-3.21
輸入nmake -f Makefile.win clean all
這時libsvm-3.21 的windows目錄下將生成64位的動態連結庫。將新生成的libsvm.dll複製到系統目錄(例如`C:\WINDOWS\system32\')即可。
-
測試
開啟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)
-
Accuracy = 84.2857% (59/70)(classification)
搞定...
-
Notes: svm_predict(datalabel, dataset, model)中datalabel and dataset至少得是list型別,不能是單值,因此如果是單個值的,需要轉為matrix,例如對單個值x, y,應寫成 svm_predict([y], [x], model)