libsvm工具箱
3.1.7 官方版- 軟件大小:817 KB
- 更新日期:2017-03-27
- 軟件語言:簡體中文
- 軟件類別:其它應(yīng)用
- 軟件授權(quán):免費軟件
- 軟件官網(wǎng):未知
- 適用平臺:WinXP, Win7, Win8, Win10, WinAll
- 軟件廠商:
軟件介紹人氣軟件相關(guān)文章網(wǎng)友評論下載地址
libsvm工具箱是一款支持向量機(SVM,Support Vector Machine)的工具箱軟件,而這款工具箱主要用于SVM模式識別與回歸的軟件包,另外,還能夠支持向量機源碼,軟件具有簡單、易于使用等特點,在解決小樣本、高維度及非線性的分類問題中應(yīng)用非常廣泛,總體來說這款libsvm工具箱非常的實用,廣受用戶好評,有需要的朋友不妨下載試試吧!
軟件功能
SVM(Support Vector Machine,支持向量機)是一種有監(jiān)督的機器學習方法,可以學習不同類別的已知樣本的特點,進而對未知的樣本進行預測。
SVM本質(zhì)上是一個二分類的算法,對于n維空間的輸入樣本,它尋找一個最優(yōu)的分類超平面,使得兩類樣本在這個超平面下可以獲得最好的分類效果。這個最優(yōu)可以用兩類樣本中與這個超平面距離最近的點的距離來衡量,稱為邊緣距離,邊緣距離越大,兩類樣本分得越開,SVM就是尋找最大邊緣距離的超平面,這個可以通過求解一個以超平面參數(shù)為求解變量的優(yōu)化問題獲得解決。給定適當?shù)募s束條件,這是一個二次優(yōu)化問題,可以通過用KKT條件求解對偶問題等方法進行求解。
對于不是線性可分的問題,就不能通過尋找最優(yōu)分類超平面進行分類,SVM這時通過把n維空間的樣本映射到更高維的空間中,使得在高維的空間上樣本是線性可分的。在實際的算法中,SVM不需要真正地進行樣本點的映射,因為算法中涉及到的高維空間的計算總是以內(nèi)積的形式出現(xiàn),而高維空間的內(nèi)積可以通過在原本n維空間中求內(nèi)積然后再進行一個變換得到,這里計算兩個向量在隱式地映射到高維空間的內(nèi)積的函數(shù)就叫做核函數(shù)。SVM根據(jù)問題性質(zhì)和數(shù)據(jù)規(guī)模的不同可以選擇不同的核函數(shù)。
雖然SVM本質(zhì)上是二分類的分類器,但是可以擴展成多分類的分類器,常見的方法有一對多(one-versus-rest)和一對一(one-versus-one)。在一對多方法中,訓練時依次把k類樣本中的某個類別歸為一類,其它剩下的歸為另一類,使用二分類的SVM訓練處一個二分類器,最后把得到的k個二分類器組成k分類器。對未知樣本分類時,分別用這k個二分類器進行分類,將分類結(jié)果中出現(xiàn)最多的那個類別作為最終的分類結(jié)果。而一對一方法中,訓練時對于任意兩類樣本都會訓練一個二分類器,最終得到k*(k-1)/2個二分類器,共同組成k分類器。對未知樣本分類時,使用所有的k*(k-1)/2個分類器進行分類,將出現(xiàn)最多的那個類別作為該樣本最終的分類結(jié)果。
LIBSVM中的多分類就是根據(jù)一對一的方法實現(xiàn)的。
軟件特色
不同的SVM制劑
高效多類分類
模型選擇的交叉驗證
概率估計
各種內(nèi)核(包括預計算內(nèi)核矩陣)
用于不平衡數(shù)據(jù)的加權(quán)SVM
C ++和Java源代碼
GUI顯示SVM分類和回歸
Python, R,MATLAB, Perl, Ruby, Weka, Common LISP, CLISP, Haskell, OCaml, LabVIEW和 PHP 界面。C#.NET代碼和CUDA擴展可用。
它還包括在一些數(shù)據(jù)挖掘環(huán)境中: RapidMiner, PCP和 LIONsolver。
自動模型選擇可以產(chǎn)生交叉驗證精度的輪廓。
安裝方法
1. 下載
在本站下載并解壓軟件。
2. 編譯
如果你使用的是64位的操作的系統(tǒng)和Matlab,那么不需要進行編譯步驟,因為自帶軟件包中已經(jīng)包含有64位編譯好的版本:libsvmread.mexw64、libsvmwrite.mexw64、svmtrain.mexw64、svmpredict.mexw64。否則,需要自己編譯二進制文件。
首先在Mtlab中進入LIBSVM根目錄下的matlab目錄(如C:libsvm-3.17matlab),在命令窗口輸入
>>mex –setup
然后Matlab會提示你選擇編譯mex文件的C/C++編譯器,就選擇一個已安裝的編譯器,如Microsoft Visual C++ 2010。之后Matlab會提示確認選擇的編譯器,輸入y進行確認。
然后可以輸入以下命令進行編譯。
>>make
注意,Matlab或VC版本過低可能會導致編譯失敗,建議使用最新的版本。
編譯成功后,當前目錄下會出現(xiàn)若干個后綴為mexw64(64位系統(tǒng))或mexw32(32位系統(tǒng))的文件。
3. 重命名(可選,但建議執(zhí)行)
編譯完成后,在當前目錄下回出現(xiàn)svmtrain.mexw64、svmpredict.mexw64(64位系統(tǒng))或者svmtrain.mexw32、svmpredict.mexw32(32位系統(tǒng))這兩個文件,把文件名svmtrain和svmpredict相應(yīng)改成libsvmtrain和libsvmpredict。
這是因為Matlab中自帶有SVM的工具箱,而且其函數(shù)名字就是svmtrain和svmpredict,和LIBSVM默認的名字一樣,在實際使用的時候有時會產(chǎn)生一定的問題,比如想調(diào)用LIBSVM的變成了調(diào)用Matlab SVM。
如果有進行重命名的,以后使用LIBSVM時一律使用libsvmtrain和libsvmpredict這兩個名字進行調(diào)用。
4. 添加路徑
為了以后使用的方便,建議把LIBSVM的編譯好的文件所在路徑(如C:libsvm-3.17matlab)添加到Matlab的搜索路徑中。具體操作為:(中文版Matlab對應(yīng)進行)
HOME -> Set Path -> Add Folder -> 加入編譯好的文件所在的路徑(如C:libsvm-3.17matlab)
當然也可以把那4個編譯好的文件復制到想要的地方,然后再把該路徑添加到Matlab的搜索路徑中。
二 測試
LIBSVM軟件包中自帶有測試數(shù)據(jù),為軟件包根目錄下的heart_scale文件,可以用來測試LIBSVM是否安裝成功。這里的heart_scale文件不能用Matlab的load進行讀取,需要使用libsvmread讀取。
進入LIBSVM的根目錄運行以下代碼(因為heart_scale文件沒有被添加進搜索路徑中,其他路徑下無法訪問這個文件):
[heart_scale_label, heart_scale_inst] = libsvmread('heart_scale');
model = libsvmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
[predict_label, accuracy, dec_values] = libsvmpredict(heart_scale_label, heart_scale_inst, model);
如果LIBSVM安裝正確的話,會出現(xiàn)以下的運行結(jié)果,顯示正確率為86.6667%。
*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
Accuracy = 86.6667% (234/270) (classification)
使用方法
關(guān)于LIBSVM在Matlab中的使用,可以參看軟件包中matlab目錄下的README文件,這里對里面內(nèi)容做一個翻譯和一些細節(jié)的講解。
1. 訓練
libsvm函數(shù)用于對訓練集的數(shù)據(jù)進行訓練,得到訓練好的模型。
model = libsvmtrain(training_label_vector, training_instance_matrix [, 'libsvm_options']);
這個函數(shù)有三個參數(shù),其中
-training_label_vector:訓練樣本的類標,如果有m個樣本,就是m x 1的矩陣(類型必須為double)。這里可以是二分類和多分類,類標是(-1,1)、(1,2,3)或者其他任意用來表示不同的類別的數(shù)字,要轉(zhuǎn)成double類型。
-training_instance_matrix:訓練樣本的特征,如果有m個樣本,每個樣本特征是n維,則為m x n的矩陣(類型必須為double)。
-libsvm_options:訓練的參數(shù),在第3點詳細介紹。
2. 預測
libpredict函數(shù)用于對測試集的數(shù)據(jù)進行測試,還能對未知樣本進行預測。
[predicted_label, accuracy, decision_values/prob_estimates]
= libsvmpredict(testing_label_vector, testing_instance_matrix, model [, 'libsvm_options']);
這個函數(shù)包括四個參數(shù),其中
-testing_label_vector:測試樣本的類標,如果有m個樣本,就是m x 1的矩陣(類型必須為double)。如果類標未知,可以初始化為任意m x 1的double數(shù)組。
-testing_instance_matrix:測試樣本的特征,如果有m個樣本,每個樣本特征是n維,則為m x n的矩陣(類型必須為double)。
-model:使用libsvmtrain返回的模型
-libsvm_options:預測的參數(shù),與訓練的參數(shù)形式一樣。
3. 訓練的參數(shù)
LIBSVM訓練時可以選擇的參數(shù)很多,包括:
-s svm類型:SVM設(shè)置類型(默認0)
0 — C-SVC; 1 –v-SVC; 2 – 一類SVM; 3 — e-SVR; 4 — v-SVR
-t 核函數(shù)類型:核函數(shù)設(shè)置類型(默認2)
0 – 線性核函數(shù):u‘v
1 – 多項式核函數(shù):(r*u‘v + coef0)^degree
2 – RBF(徑向基)核函數(shù):exp(-r|u-v|^2)
3 – sigmoid核函數(shù):tanh(r*u‘v + coef0)
-d degree:核函數(shù)中的degree設(shè)置(針對多項式核函數(shù))(默認3)
-g r(gamma):核函數(shù)中的gamma函數(shù)設(shè)置(針對多項式/rbf/sigmoid核函數(shù))(默認1/k,k為總類別數(shù))
-r coef0:核函數(shù)中的coef0設(shè)置(針對多項式/sigmoid核函數(shù))((默認0)
-c cost:設(shè)置C-SVC,e -SVR和v-SVR的參數(shù)(損失函數(shù))(默認1)
-n nu:設(shè)置v-SVC,一類SVM和v- SVR的參數(shù)(默認0.5)
-p p:設(shè)置e -SVR 中損失函數(shù)p的值(默認0.1)
-m cachesize:設(shè)置cache內(nèi)存大小,以MB為單位(默認40)
-e eps:設(shè)置允許的終止判據(jù)(默認0.001)
-h shrinking:是否使用啟發(fā)式,0或1(默認1)
-wi weight:設(shè)置第幾類的參數(shù)C為weight*C (C-SVC中的C) (默認1)
-v n: n-fold交互檢驗?zāi)J?,n為fold的個數(shù),必須大于等于2
以上這些參數(shù)設(shè)置可以按照SVM的類型和核函數(shù)所支持的參數(shù)進行任意組合,如果設(shè)置的參數(shù)在函數(shù)或SVM類型中沒有也不會產(chǎn)生影響,程序不會接受該參數(shù);如果應(yīng)有的參數(shù)設(shè)置不正確,參數(shù)將采用默認值。
4. 訓練返回的內(nèi)容
libsvmtrain函數(shù)返回訓練好的SVM分類器模型,可以用來對未知的樣本進行預測。這個模型是一個結(jié)構(gòu)體,包含以下成員:
-Parameters: 一個5 x 1的矩陣,從上到下依次表示:
-s SVM類型(默認0);
-t 核函數(shù)類型(默認2)
-d 核函數(shù)中的degree設(shè)置(針對多項式核函數(shù))(默認3);
-g 核函數(shù)中的r(gamma)函數(shù)設(shè)置(針對多項式/rbf/sigmoid核函數(shù)) (默認類別數(shù)目的倒數(shù));
-r 核函數(shù)中的coef0設(shè)置(針對多項式/sigmoid核函數(shù))((默認0)
-nr_class: 表示數(shù)據(jù)集中有多少類別,比如二分類時這個值即為2。
-totalSV: 表示支持向量的總數(shù)。
-rho: 決策函數(shù)wx+b中的常數(shù)項的相反數(shù)(-b)。
-Label: 表示數(shù)據(jù)集中類別的標簽,比如二分類常見的1和-1。
-ProbA: 使用-b參數(shù)時用于概率估計的數(shù)值,否則為空。
-ProbB: 使用-b參數(shù)時用于概率估計的數(shù)值,否則為空。
-nSV: 表示每類樣本的支持向量的數(shù)目,和Label的類別標簽對應(yīng)。如Label=[1; -1],nSV=[63; 67],則標簽為1的樣本有63個支持向量,標簽為-1的有67個。
-sv_coef: 表示每個支持向量在決策函數(shù)中的系數(shù)。
-SVs: 表示所有的支持向量,如果特征是n維的,支持向量一共有m個,則為m x n的稀疏矩陣。
另外,如果在訓練中使用了-v參數(shù)進行交叉驗證時,返回的不是一個模型,而是交叉驗證的分類的正確率或者回歸的均方根誤差。
5. 預測返回的內(nèi)容
libsvmtrain函數(shù)有三個返回值,不需要的值在Matlab可以用~進行代替。
-predicted_label:第一個返回值,表示樣本的預測類標號。
-accuracy:第二個返回值,一個3 x 1的數(shù)組,表示分類的正確率、回歸的均方根誤差、回歸的平方相關(guān)系數(shù)。
-decision_values/prob_estimates:第三個返回值,一個矩陣包含決策的值或者概率估計。對于n個預測樣本、k類的問題,如果指定“-b 1”參數(shù),則n x k的矩陣,每一行表示這個樣本分別屬于每一個類別的概率;如果沒有指定“-b 1”參數(shù),則為n x k*(k-1)/2的矩陣,每一行表示k(k-1)/2個二分類SVM的預測結(jié)果。
6. 讀取或保存
libsvmread函數(shù)可以讀取以LIBSVM格式存儲的數(shù)據(jù)文件。
[label_vector, instance_matrix] = libsvmread(‘data.txt‘);
這個函數(shù)輸入的是文件的名字,輸出為樣本的類標和對應(yīng)的特征。
libsvmwrite函數(shù)可以把Matlab的矩陣存儲稱為LIBSVM格式的文件。
libsvmwrite(‘data.txt‘, label_vector, instance_matrix]
這個函數(shù)有三個輸入,分別為保存的文件名、樣本的類標和對應(yīng)的特征(必須為double類型的稀疏矩陣)。
下載地址
-
libsvm工具箱 3.1.7 官方版
人氣軟件
Adobe Acrobat Pro DC 永久激活版下載548 MB
/簡體中文X-Force KeyGen注冊機合集(32+64位)658 KB
/英文autocad2017注冊機 支持32位/64位676 KB
/簡體中文KYTool插件下載(凱元工具)30.54 MB
/簡體中文云南師范大學上網(wǎng)認證客戶端44.8 MB
/簡體中文草圖大師通用注冊機(sketchup2016激活碼獲取)894 KB
/簡體中文Stata 16(統(tǒng)計學軟件)356 MB
/簡體中文refprop(制冷劑物性查詢運算軟件)附中文教程6.5 MB
/簡體中文hpds2011下載(城鎮(zhèn)道路路面設(shè)計)1.3 MB
/簡體中文中控zktime考勤軟件系統(tǒng)38.7 MB
/簡體中文
相關(guān)文章
查看所有評論>>網(wǎng)友評論共0條
精彩評論
- 最新評論