matlab中安裝Libsvm 步驟

2021-06-19 03:50:17 字數 4071 閱讀 4778

源自:

二.配置編譯器

開啟 matlab,切換到c:\program files\matlab\r2011a\toolbox\libsvm-3.12\matlab目錄下,鍵入以下命令:

mex –setup

出現提示語句

please choose your compiler for building mex-files:

would you like mex to locate installed compilers [y]/n?n %

這次是選擇編譯器,輸入n,選擇自定義的編譯器

出現以下選項(因電腦而異)

select a compiler:

[1] intel c++ 11.1 (with microsoft visual c++ 2008 sp1 linker)

[2] intel visual fortran 11.1 (with microsoft visual c++ 2008 sp1 linker)

[3] intel visual fortran 11.1 (with microsoft visual c++ 2008 shell linker)

[4] lcc-win32 c 2.4.1

[5] microsoft visual c++ 6.0

[6] microsoft visual c++ 2005 sp1

[7] microsoft visual c++ 2008 sp1

[8] microsoft visual c++ 2010

[9] microsoft visual c++ 2010 express

[10] open watcom c++

[0] none

compiler: 8%

可以用其他的,出現以下提示語句

your machine has a microsoft visual c++ 2010 compiler located at

c:\program files\microsoft visual studio 10.0. do you want to use this compiler [y]/n?

編譯器預設路徑,確認正確輸入y,更改路徑,輸入n

輸入y出現再次確認

please verify your choices:

compiler: microsoft visual c++ 2010

location: c:\program files\microsoft visual studio 10.0

are these correct [y]/n? y

編譯器配置完成

from template: c:\progra~1\matlab\r2011a\bin\win32\mexopts\msvc100opts.bat

done . . .

三.編譯

輸入命令

>> make

>>

%編譯完成

系統就會生成svmtrain.mexw32,svmpredict.mexw32,libsvmread.mexw32和libsvmwrite.mexw32等檔案(對於matlab 7.1以下上版本,生成的對應檔案為svmtrain.dll,svmpredict.dll和 read_sparse.dll,沒做測試),然後可以在matlab的選單 file->set path->add with subfolders(可直接用add folder)裡,把c:\program files\matlab\r2011a\toolbox\libsvm-3.12\matlab目錄新增進去,這樣以後在任何目錄下都可以呼叫 libsvm的函式了。

四.測試

為了檢驗 libsvm和 matlab之間的介面是否已經配置完成,可以在 matlab下執行以下命令:

>>load heart_scale

完成該步驟後發現workspace中出現了heart_scale_inst和 heart_scale_label,說明正確

>>model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');

>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model); %

accuracy = 86.6667% (234/270) (classification)% done

如果執行正常並生成了model這個結構體(其中儲存了所有的支援向量及其係數),那麼說明libsvm和matlab 之間的介面已經完全配置成功。

附:如果你沒有 heart_scale.mat(官方現在都不給了,給的都是vc++下的格式 所以load 會報錯:heart_scale must be same as previous lines)

所以必須使用給的乙個函式,轉化資料此函式為libsvmread()

使用如下: [label_vector, instance_matrix] = libsvmread('filename');

此處為了跟官方統一名稱可以[heart_scale_label,heart_scale_inst] = libsvmread('heart_scale');

由於heart_scale在libsvm-3.11目錄下,不是在matlab下,所以直接用libsvmread命令會報錯,要買改變當前路徑,或者使用[heart_scale_label,heart_scale_inst] = libsvmread('../heart_scale');../代表返回上層路徑。

注意:

1. matlab自帶了c編譯器lcc-win32c,但是libsvm原始版本是c++實現的,因此需要c++的編譯器來編譯,這就是不適用matlab預設編譯器而選擇其他c++編譯器的原因。

matlab支援的編譯器也是有限的,可以檢視不同版本matlab支援的編譯器列表

2. 如果matlab版本太低,如matlab 7.0是不能用vs作為編譯器的,只能用vc++ 6.0

3. .mexw32 檔案是經過加密的,開啟是亂碼,函式本身沒有幫助。

例如輸入 help svmpredict會出現報錯: svmpredict not found

工具箱libsvm-3.12\matlab中readme檔案才是幫助檔案。

但是輸入help svmtrain會出現幫助資訊,其實出現的是系統自帶的svmtrain函式,沒有libsvm工具箱中的好用。

4.在新版本libsvm3.12中,資料夾libsvm-3.12\windows中已經有編譯好的程式,可以直接使用,只需要把libsvm-3.12\windows新增到matlab路徑中即可,不需要編譯的過程。當然最好還是自己編譯一遍,因為編譯環境不同會導致一些不可預估的小問題,自己編譯的過程是可控的。

5. 測試用資料集,libsvm官網上提供了很多資料集

測試使用的heart_scale資料集是c++版本的(類標籤 1:第乙個屬性 2:第二個屬性…),可以用libsvmread來轉換為matlab版本的(它們的區別在類標籤)。

[label_vector, instance_matrix] = libsvmread(『c++版本資料集』); %得到類標籤和屬性矩陣,然後可以使用它們訓練了model = svmtrain(label_vector, instance_matrix);

>> load heart_scale

>> model = svmtrain(heart_scale_label,heart_scale_inst); *

optimization finished, #iter = 162

nu = 0.431029

obj = -100.877288, rho = 0.424462

nsv = 132, nbsv = 107

total nsv = 132

>> [predict_label,accuracy] = svmpredict(heart_scale_label,heart_scale_inst,model);

accuracy = 86.6667% (234/270) (classification)

6.參考資料

詳解:

在MATLAB中安裝libsvm

搞了一天,看了很多資料,終於搞好了matlab中呼叫大牛寫好的svm庫,將結果告訴大家避免以後走彎路。1.參考 詳解 2.操作流程 請注意 詳細操作流程請參考上面的 詳解 這裡只說大框架和詳解裡沒有提到的問題。a.設定path file set path add with subfolders 加入...

Matlab 安裝libsvm 教程

本人在書寫過程中參考了 首先本文針對的是作業系統是window 64bit,matlab2013a。2.安裝編譯環境 liabsvm在matlab中使用之前需要編譯,而matlab 2013a 已經不再提供c c 編譯器,所以需要自行安裝編譯器,我安裝的是visual studio 2012,之所以...

libsvm與matlab,安裝除錯

趁著所裡的網好,我趕緊寫下這麼一篇bug除錯,是關於matlab與 libsvm mat 2.89 3 farutoultimate3.0mcode 的 一下簡稱libsvm 閒話不多說了,首先介紹一下博主的機器 win10 64 bit matlab 2013ra 破解版 64bit visula...