日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

libsvm的安装和使用(1)

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libsvm的安装和使用(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LIBSVM在64位電腦系統下,不用進行編譯(mex –setup等)即可使用。只需要進入mex文件所在的文件夾即可調用相應的方法。

本文所使用的是libsvm-3.17,在我的資源分享頁面中可以下載。

1.安裝

(1)將下載下來的libsvm放在MATLAB安裝的toolbox文件夾下。如下圖所示:


(2)在MATLAB的地址欄中找到mex64文件所在的位置一般是放在Windows文件夾中,如下圖所示:


(3)測試:將heart_scale文件放在Windows文件夾下;

? ? ? ? ? ?命令窗口輸入:[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale'); ?%這里的 ? ? ? ? ? ? ? ? ? ? ? ? ??libsvmread()對應libsvmread.mex64文件

? ? ? ? ? ? ? ? ? ? ? ? ?model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');%這 ? ? ? ? ? ? ? ? ? ? ? ? ? ?里的svmtrain()對應svmtrain.mex64文件

? ? ? ? ? ? ? ? ? ? ? ? [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label,hea ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rt_scale_inst, model);%?這里的svmpredict()對應svmpredict.mex64文件

? ? ? ? ? ? 輸出結果如下圖所示,則表明Libsvm工具可以使用。

? ? ? ? #iter為迭代次數,nu是你選擇的核函數類型的參數,obj為SVM文件轉換為的二次規劃求解得到的最小值,rho為判決函數的偏置項b,nSV為標準支持向量個數



2.使用

(1) libSVM的數據格式

Label 1:value 2:value ….

Label:是類別的標識,比如上節train.model中提到的1 -1,你可以自己隨意定,比如-10,0,15。當然,如果是回歸,這是目標值,就要實事求是了。

Value:就是要訓練的數據,從分類的角度來說就是特征值,數據之間用空格隔開

注:如果特征值為0,特征冒號前面的(姑且稱做序號)可以不連續。如:

-15 1:0.708 3:-0.3333


(2)svmscale的用法

svmscale是用來對原始樣本進行縮放的,范圍可以自己定,一般是[0,1]或[-1,1]。縮放的目的主要是

1)防止某個特征過大或過小,從而在訓練中起的作用不平衡;

2)為了計算速度。因為在核計算中,會用到內積運算或exp運算,不平衡的數據可能造成計算困難。

用法:svmscale [-l lower] [-u upper]

? ? ? ? ? ? ? ?[-y y_lower y_upper]

? ? ? ? ? ? ? ?[-s save_filename]

? ? ? ? ? ? ? ?[-r restore_filename] filename

其中,[]中都是可選項:

?????????-l:設定數據下限;lower:設定的數據下限值,缺省為-1

?????????-u:設定數據上限;upper:設定的數據上限值,缺省為?1

?????????-y:是否對目標值同時進行縮放;y_lower為下限值,y_upper為上限值;

?????????-s save_filename:表示將縮放的規則保存為文件save_filename;

?????????-r restore_filename:表示將按照已經存在的規則文件restore_filename進行縮放;

???????? filename:待縮放的數據文件,文件格式按照libsvm格式。

e.g.默認情況下,只需要輸入要縮放的文件名:(已經存在的文件為test.txt)

?????????????????????????svmscale test.txt

????這時,test.txt中的數據已經變成[-1,1]之間的數據了。但是,這樣原來的數據就被覆蓋了,

e.g.為了讓規劃好的數據另存為其他的文件,我們用一個dos的重定向符?>?來另存為(假設為out.txt):

??????????????????????? svmscale test.txt > out.txt

???運行后,out.txt文件就是規范后的數據。

e.g.我們想設定數據范圍[0,1],并把規則保存為test.range文件:

???????????????????????? svmscale –l 0 –u 1 –s test.range test.txt > out.txt

這時,目錄下又多了一個test.range文件,可以用記事本打開,下次就可以用-r test.range來載入了。


(3)?svmtrain的用法

svntrain對訓練數據集的訓練,并可以獲得SVM模型。

?用法:?svmtrain [options training_set_file model_file]

其中,options為操作參數,可用的選項即表示的涵義如下所示:

? -s?設置svm類型:

?????????0 – C-SVC

?????????1 – v-SVC

?????????2 – one-class-SVM

?????????3 –?ε-SVR

?????????4 – n - SVR

? -t?設置核函數類型,默認值為2

?????????0 --?線性核:u'*v

?????????1 --?多項式核:?(g*u'*v+?coef?0)degree

?????????2 -- RBF?核:exp(-γ*||u-v||2)

?????????3 -- sigmoid?核:tanh(γ*u'*v+?coef?0)

? -d degree:?設置多項式核中degree的值,默認為3

? -gγ:?設置核函數中γ的值,默認為1/k,k為特征(或者說是屬性)數;

??-r coef 0:設置核函數中的coef 0,默認值為0;

??-c cost:設置C-SVC、ε-SVR、n - SVR中從懲罰系數C,默認值為1;

??-n v?:設置v-SVC、one-class-SVM?與n - SVR?中參數n?,默認值0.5;

??-p?ε?:設置v-SVR的損失函數中的e?,默認值為0.1;

??-m cachesize:設置cache內存大小,以MB為單位,默認值為40;

??-e?ε?:設置終止準則中的可容忍偏差,默認值為0.001;

??-h shrinking:是否使用啟發式,可選值為0?或1,默認值為1;

??-b?概率估計:是否計算SVC或SVR的概率估計,可選值0?或1,默認0;

??-wi weight:對各類樣本的懲罰系數C加權,默認值為1;

??-v n:n折交叉驗證模式;

model_file:可選項,為要保存的結果文件,稱為模型文件,以便在預測時使用。

????默認情況下,只需要給函數提供一個樣本文件名就可以了,但為了能保存結果,還是要提供一個結果文件名,比如:test.mod ? ? el,則命令為: ? ??svmtrain test.txt test.model


(4)svmpredict的用法

svmpredict是根據訓練獲得的模型,對數據集合進行預測。

[predict_label, accuracy, prob_values] = svmpredict(testLabel, testData, model, ‘-b 1’); % run the SVM model on the test data

a記錄了對應樣本識別出來的類別?
b正確率以及模型參數?
c分類概率?

3.經典案例

出現的錯誤及其原因總結

錯誤:SVMTRAIN only supports classification into two groups. GROUP contains 21 groups.

原因:沒有導入libsvm工具箱,重復安裝中的2步驟,運行時要添加到路徑

case1:

%%clean work tic;%記錄運行時間 close all;%關閉所有figure窗口 clear;%清空變量 clc;%清空命令 format compact;%空格緊湊%生成待回歸的數據 x = (-1:0.1:1)'; y = -x.^2;%建立回歸模型 model = svmtrain(y,x,'-s 3 -t 2 -c 2.2 -g 2.8 -p 0.01');%利用建立的模型看其在訓練集上的回歸效果 [py,mse,prob] = svmpredict(y,x,model,'-b 0'); figure;%建立一個窗口 plot(x,y,'o');%原始數據以o這種形式標記 hold on;%保持當前圖像不刷新 plot(x,py,'r*');%回歸數據以紅色的*標記 legend('原始數據','回歸數據');%設置圖例線條 grid on;%畫圖的時候添加網格線%進行預測 testx = [1.1;1.2;1.3]; display('真實數據');%控制臺輸出 testy = -testx.^2 [ptesty,tmse,prob2] = svmpredict(testy,testx,model,'-b 0'); display('預測數據'); ptestytoc

運行結果:


原博主是通過y=-x^2這個表達式進行訓練,在圖像上顯示原始數據和回歸數據。

case2:








?


總結

以上是生活随笔為你收集整理的libsvm的安装和使用(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。