LIBSVM3 18 遇到的問題

2021-06-26 09:25:38 字數 2675 閱讀 1026

2012-06-17 09:50:56

|  分類:

it|  標籤:

matlab

libsvm|舉報

|字型大小訂閱

注:版本說明matlab r2010a,libsvm 3.12 ,vc++ 6.0

2023年4月12日,本博新增:

整個過程,都是在 libsvm-3.12\matlab目錄下操作的。如果這一點你忽視了,你不可能解決配置中報的bug,即使重新安裝matlab也不行。

本文的配置路徑為 d:\matlab\r2010a\toolbox\libsvm-3.12\matlab,從始至終都是在這個目錄下進行的。

當然,你也可以將編譯好的檔案拷貝到任何地方,只要你當前的工作目錄中有這四個檔案即可。

詳細步驟如下:

我的matlab版本 r2010a,我的libsvm版本3.12

2.解壓至指定目錄

將libsvm解壓至d:\matlab\r2010a\toolbox下,你也可以解壓至你喜歡的地方。

3.設定路徑

4.編譯libsvm

我的編譯器是vc++ 6.0

首先在matlab設定當前目錄為

d:\matlab\r2010a\toolbox\libsvm-3.12\matlab

5.執行編譯

在matlab命令視窗中輸入

mex -setup

顯示please choose your compiler for building external inte***ce (mex) files: 

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

輸入yselect a compiler: 

[1] lcc-win32 c 2.4.1 in d:\matlab\r2010a\sys\lcc 

[2] microsoft visual c++ 2008 sp1 in d:\program files\microsoft visual studio 9.0 

[3] microsoft visual c++ 6.0 in d:\program files\microsoft visual studio 

[0] none 

compiler:

需要你選擇編譯器

我輸入的是3 即選擇vc++ 6.0

please verify your choices: 

compiler: microsoft visual c++ 6.0 

location: d:\program files\microsoft visual studio 

are these correct [y]/n?

再次確認自己的選擇,輸入y

from template:              d:\matlab\r2010a\bin\win32\mexopts\msvc60opts.bat 

done . . . 

編譯器選擇好了之後,用make.m編譯

命令視窗輸入make

可以看到新編譯出4個檔案libsvmread.mexw32,libsvmwrite.mexw32,svmtrain.mexw32,svmpredict.mexw32

在命令視窗中輸入

load heart_scale;

此時需注意,libsvm 3.12中提供的是c++版本的資料集heart_scale,這裡需要載入matlab版本的資料集。

這兩個資料集有什麼不同呢?

c++版本的資料集裡面如果某乙個樣本的某乙個特徵為0,這個特徵可以不寫在資料集中,但是在matlab版本中,必須要寫出來。

否則的話,會報這樣乙個錯誤:

然後讀取資料集

libsvmread('heart_scale');

完成該步驟後發現

workspace中出現了heart_scale_inst 和heart_scale_label,

說明正確。

model=svmtrain(heart_scale_label,heart_scale_inst)

[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)

/

本博2023年4月18日新增

部分博友反應

[predict_lebel,accuracy]=svmpredict(heart_scale_label,heart_scale_inst,model)

命令會報bug,這是libsvm新的版本對於輸出結果的重新設定。

改為如下命令即可。(老版本不用改變。本文是libsvm-3.12。)

model=svmtrain(heart_scale_label,heart_scale_inst)

[

predicted_label, accuracy, decision_values

]=svmpredict(heart_scale_label,heart_scale_inst,model)

/證明libsvm安裝成功,可以進行其他的實驗了。

libsvm在matlab中遇到的問題總結

包含libsvm四個exe程式包,我們所用的庫就是它們,然後在matlab命令框輸入 1.mex setup 2.選擇vc 3.之後輸入make 問題一 error d libsvm libsvm 3.21 matlab make.m failed line 13 未找到 e 百葉通 matlab ...

遇到的問題

1 若class cnmdevctrlprotocol virtual public cnetcomm則starttimer編譯通不過 2 activex在ie下載入多個,相當於多執行緒,所以這時候的activex不要使用全域性變數,當時如果編寫動態庫也不要使用全域性變數 3 btn灰顯或sleep...

遇到的問題

這個文章用於記錄在學習和使用c 的時候遇到的一些問題,以及解決方法,記載了一些非常零散的知識點,沒有主題。在c 11中,有一種新的方法在用new運算子申請結構體內存的同時對其初始化。其格式為 struct car car p new car 但是如果結構體中包含了字元陣列 字串 就不能使用這種格式,...