buaasuozi 《---這是原作者;
安裝libsvm 不成功有可能是你的MATLAB版本或者是編譯文件版本的問題,但是不要急着換其他版本。。。。說不定就有別的解決辦法呢
首先感謝Lin教授及其實驗室提供的libsvm工具箱,原始下載地址:下載主頁:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 下載地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/#download
原本我使用的是libsvm-3.01版本,但是目前更換了matlab版本,由32位變為64位,再使用原來的libsvm進行 mex -setup 編譯就會出現如下錯誤(異常):
>> mex -setup
MEX 配置為使用 'Microsoft Visual C++ 2012 (C)' 以進行 C 語言編譯。
警告: MATLAB C 和 Fortran API 已更改,現可支持
包含 2^32-1 個以上元素的 MATLAB 變量。不久以后,
您需要更新代碼以利用
新的 API。您可以在以下網址找到相關詳細信息:
http://www.mathworks.com/help/ma ... use-64-bit-api.html。
要選擇不同的語言,請從以下選項中選擇一種命令:
mex -setup C++
mex -setup FORTRAN
MEX 配置為使用 'Microsoft Visual C++ 2012 (C)' 以進行 C 語言編譯。
警告: MATLAB C 和 Fortran API 已更改,現可支持
包含 2^32-1 個以上元素的 MATLAB 變量。不久以后,
您需要更新代碼以利用
新的 API。您可以在以下網址找到相關詳細信息:
http://www.mathworks.com/help/ma ... use-64-bit-api.html。
要選擇不同的語言,請從以下選項中選擇一種命令:
mex -setup C++
mex -setup FORTRAN
在網上找了很多解決方案,都沒有奏效,開始以為是matlab和visual studio版本問題,也懷疑了win10 64位系統問題,按照網上的方案解決都沒有奏效。
后來參看了
http://apinetree.blog.51cto.com/714152/1560254 這篇文章,受到了啟發。但是按照這篇文章的提示操作,還是報錯:
Invalid MEX-file 'C:\Program Files\MATLAB\R2014b\toolbox\libsvm-3.21\windows\libsvmread.mexw64': 找不到指定的模塊。
后來按照libsvm提供的最原始辦法:make 解決了
具體步驟如下:
1、下載libsvm,我下載的是libsvm-3.21版本,大家也可以去這里下載:
下載libsvm-3.21
2、解壓后放到matlab的安裝目錄下,我個人喜歡直接放到matlab下面的toolbox里面,畢竟這也是其中的工具之一。
3、在matlab主界面找到“設置路徑”,添加文件夾及其子文件,索性把整個libsvm-3.21全添加進去,反正可能都要用到。
4、切換matlab運行目錄致:C:\Program Files\MATLAB\R2014b\toolbox\libsvm-3.21\matlab,在命令行輸入make,也就是該目錄下的那個make文件。這時候就像以前安裝libsvm一樣,會自動make出來很多文件,不用管,主要是會看到make出帶有mexm64后綴名的文件,這就成功了。
5、拷貝4步驟中matlab文件夾下所有make出來的文件,到libsvm-3.21\windows文件夾下,替換替換替換……,統統替換。
6、over,出一口氣,放松一下,距離成功只差后面的第七步
7、驗證是否成功:使用數據
libsvm試驗數據下載
可以將下載后的heart_scale.mat數據復制到剛才的目錄下(其實無所謂)。然后輸入libsvm工具箱特有的語句,就可以驗證成功與否了:
>> load heart_scale.mat
>> 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);
輸出:
*
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
optimization finished, #iter = 134
nu = 0.433785
obj = -101.855060, rho = 0.426412
nSV = 130, nBSV = 107
Total nSV = 130
、、、、標准支持向量和邊界支持向量。。。nSV = 130, nBSV = 107
Accuracy = 86.6667% (234/270) (classification)
得到了分類精度,這就證明libsvm安裝成功!
以上親測,運行環境win10 64位系統,matlab R2014b libsvm-3.21 visual studio 2012
http://blog.csdn.net/buaasuozi/article/details/50781615