當前位置:首頁 » 編程語言 » pythonlibsvm

pythonlibsvm

發布時間: 2024-08-24 17:25:08

1. 如何利用python使用libsvm

把包解壓在C盤之中,如:C:\libsvm-3.182.
因為要用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤.進入c:\libsvm\tools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存
python與libsvm的連接(參考SVM學習筆記(2)LIBSVM在python下的使用)

1.打開IDLE(pythonGUI),輸入>>>importsys>>>sys.version
2.如果你的python是32位,將出現如下字元:
(default,Apr102012,23:31:26)[MSCv.150032bit(Intel)]』
這個時候LIBSVM的python介面設置將非常簡單。在libsvm-3.16文件夾下的windows文件夾中找到動態鏈接庫libsvm.dll,將其添加到系統目錄,如`C:\WINDOWS\system32\』,即可在python中使用libsvm
wk_ad_begin({pid : 21});wk_ad_after(21, function(){$('.ad-hidden').hide();}, function(){$('.ad-hidden').show();});
3.執行一個小例子

importos
os.chdir('C:\libsvm-3.18\python')#請根據實際路徑修改
fromsvmutilimport*
y,x=svm_read_problem('../heart_scale')#讀取自帶數據
m=svm_train(y[:200],x[:200],'-c4')
p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)
##出現如下結果,應該是正確安裝了optimizationfinished,#iter=257nu=0.351161
obj=-225.628984,rho=0.636110nSV=91,nBSV=49
TotalnSV=91

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

2. 如何利用python使用libsvm

  • 准備工具

    libsvm軟體包;

    電腦;

  • 步驟操作

  1. 把包解壓在C盤之中,如:C:libsvm-3.18;

  2. 用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤;

  3. 進入c:libsvm ools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存;


  4. 3. python調用libSVM異常,svm_save_model(modelName,model)。總說第一個參數類型錯誤

    可以看看python文件夾下面的README。第一個參數是:保存model的文件名,字元串類型。第二個參數就是svm_train返回的model。
    README裡面有詳細的例子。按照你的錯誤,
    model_file_name是字元串類型嗎?檢查一下就行吧

    4. 如何下載libsvm python

    下載libsvm python的方法:

    1、訪問「www.csie.ntu.e.tw/~cjlin/libsvm/」網頁,下載zip格式的數據包

    2、將文件解壓到python的site-packages文件夾中就可以了

    更多Python知識,請關註:Python自學網!!

    5. 如何利用python使用libsvm

    一:libsvm包下載與使用:

    LIBSVM是台灣大學林智仁(Lin Chih-Jen)副教授等開發設計的一個簡單、易於使用和快速有效的SVM模式識別與回歸的軟體包,他不但提供了編譯好的可在Windows系列系統的執行文件,還提供了源代碼,方便改進.
    把包解壓在C盤之中,如:C:\libsvm-3.18
    2.
    因為要用libsvm自帶的腳本grid.py和easy.py,需要去官網下載繪圖工具gnuplot,解壓到c盤
    3.
    進入c:\libsvm\tools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個文件,找到其中關於gnuplot路徑的那項,根據實際路徑進行修改,並保存
    4python與libsvm的連接(參考SVM學習筆記(2)LIBSVM在python下的使用 )

    a.打開IDLE(python GUI),輸入
    >>>import sys
    >>>sys.version
    如果你的python是32位,將出現如下字元:
    『2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)]』
    這個時候LIBSVM的python介面設置將非常簡單。在libsvm-3.16文件夾下的windows文件夾中找到動態鏈接庫libsvm.dll,將其添加到系統目錄,如`C:\WINDOWS\system32\』,即可在python中使用libsvm
    b.如果你是64位的請參考文獻,請參考上述連接。

    5.執行一個小例子

    import os

    os.chdir('C:\libsvm-3.18\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)

    ##出現如下結果,應該是正確安裝了
    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)

    二幾個簡單的例子
    從下載實驗數據集。並且將數據集拷貝到C:\libsvm-3.18\windows下(因為之後我們需要利用該文件夾下的其他文件,這樣比較方便,當然之後你用絕對地址也可以了)
    建立一個py文件,寫下如下代碼:
    例1:

    import os

    os.chdir('C:\libsvm-3.18\windows')#設定路徑
    from svmutil import *

    y, x = svm_read_problem('train.1.txt')#讀入訓練數據
    yt, xt = svm_read_problem('test.1.txt')#訓練測試數據
    m = svm_train(y, x )#訓練
    svm_predict(yt,xt,m)#測試

    執行上述代碼,精度為:Accuracy = 66.925% (2677/4000) (classification)

    常用介面
    svm_train() : train an SVM model#訓練
    svm_predict() : predict testing data#預測
    svm_read_problem() : read the data from a LIBSVM-format file.#讀取libsvm格式的數據
    svm_load_model() : load a LIBSVM model.
    svm_save_model() : save model to a file.
    evaluations() : evaluate prediction results.
    - Function: svm_train#三種訓練寫法
    There are three ways to call svm_train()
    >>> model = svm_train(y, x [, 'training_options'])
    >>> model = svm_train(prob [, 'training_options'])
    >>> model = svm_train(prob, param)

    有關參數的設置(read me 文件夾中有詳細說明):
    Usage: svm-train [options] training_set_file [model_file]
    options:
    -s svm_type : set type of SVM (default 0)#選擇哪一種svm
    0 -- C-SVC (multi-class classification)
    1 -- nu-SVC (multi-class classification)
    2 -- one-class SVM
    3 -- epsilon-SVR (regression)
    4 -- nu-SVR (regression)
    -t kernel_type : set type of kernel function (default 2)#是否用kernel trick
    0 -- linear: u'*v
    1 -- polynomial: (gamma*u'*v + coef0)^degree
    2 -- radial basis function: exp(-gamma*|u-v|^2)
    3 -- sigmoid: tanh(gamma*u'*v + coef0)
    4 -- precomputed kernel (kernel values in training_set_file)
    -d degree : set degree in kernel function (default 3)
    -g gamma : set gamma in kernel function (default 1/num_features)
    -r coef0 : set coef0 in kernel function (default 0)
    -c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
    -n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
    -p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
    -m cachesize : set cache memory size in MB (default 100)
    -e epsilon : set tolerance of termination criterion (default 0.001)
    -h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
    -b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
    -wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
    -v n: n-fold cross validation mode
    -q : quiet mode (no outputs)

    三提高預測的准確率:
    通過一定的過程,可以提高預測的准確率(在文獻2中有詳細介紹):
    a.轉換數據為libsvm可用形式.(可以通過下載的數據了解格式)
    b.進行一個簡單的尺度變換
    c.利用RBF kernel,利用cross-validation來查找最佳的參數 C 和 r
    d.利用最佳參數C 和 r ,來訓練整個數據集
    e.測試

    再看例子1:
    1.進入cmd模式下,輸入如下代碼,將現有數據進行適度變換,生成變換後的數據文件train.1.scale.txt

    參數說明:
    -l 變換後的下限
    -u 變換後的上限
    -s 參考上文

    2執行以下代碼

    import os

    os.chdir('C:\libsvm-3.18\windows')#設定路徑
    from svmutil import *

    y, x = svm_read_problem('train.1.scale.txt')#讀入訓練數據
    yt, xt = svm_read_problem('test.1.scale.txt')#訓練測試數據
    m = svm_train(y, x )#訓練
    svm_predict(yt,xt,m)#測試

    精確度為Accuracy = 95.6% (3824/4000) (classification)。
    可見我們只是做了簡單的尺度變換後,預測的正確率大大提升了。

    3通過選擇最優參數,再次提高預測的准確率:(需要把tools文件下的grid.py拷貝到'C:\libsvm-3.18\windows'下)

    import os
    os.chdir('C:\libsvm-3.18\windows')#設定路徑
    from svmutil import *
    from grid import *

    rate, param = find_parameters('train.1.scale.txt', '-log2c -3,3,1 -log2g -3,3,1')

    y, x = svm_read_problem('train.1.scale.txt')#讀入訓練數據
    yt, xt = svm_read_problem('test.1.scale.txt')#訓練測試數據
    m = svm_train(y, x ,'-c 2 -g 4')#訓練
    p_label,p_acc,p_vals=svm_predict(yt,xt,m)#測試

    執行上面的程序,find_parmaters函數,可以找到對應訓練數據較好的參數。後面的log2c,log2g分別設置C和r的搜索范圍。搜索機制是以2為底指數搜索,如 –log2c –3 , 3,1 就是參數C,從2^-3,2^-2,2^-1…搜索到2^3.
    搜索到較好參數後,在訓練的時候加上參數的設置。
    另外,讀者可以自己試試數據集2,3.

    6. 如何加速基於Python的libsvm速度

    if not is_win32: svmtrain_exe = "../svm-train" gnuplot_exe = "/usr/bin/gnuplot" else: gnuplot_exe = "/usr/bin/gnuplot"這一行少了一個TAB鍵。建設你把所有行前面的空格跟TAB刪除後重新打上空格或TAB鍵。

熱點內容
資料庫主表 發布:2024-11-25 10:54:13 瀏覽:228
什麼是cf腳本 發布:2024-11-25 10:51:48 瀏覽:920
存儲台設計 發布:2024-11-25 10:40:04 瀏覽:668
如何查看自己電腦的所有配置 發布:2024-11-25 10:14:02 瀏覽:771
java編譯器偽編譯指什麼 發布:2024-11-25 10:08:53 瀏覽:961
amax伺服器默認地址 發布:2024-11-25 10:07:20 瀏覽:318
甘肅省浪潮伺服器雲伺服器 發布:2024-11-25 10:07:17 瀏覽:522
android手環 發布:2024-11-25 10:03:55 瀏覽:163
如何將安卓機設置為蘋果機 發布:2024-11-25 09:41:24 瀏覽:970
伺服器屏蔽一段ip 發布:2024-11-25 08:52:06 瀏覽:100