2022.3.20 星期天
[記錄自己踩過的坑,不適用每個人]
matlab安裝libsvm工具包
win10系統;matlab R2018a
一、libsvm工具包
1.下載libsvm工具箱,libsvm工具箱下載網站libsvm網站(LIBSVM -- A Library for Support Vector Machines (ntu.edu.tw)),或者直接從github上下載,一般是下載zip壓縮文件,解壓后如圖。
其中有java,matlab和python 三種版本,以及測試數據集heart_scale,和readme說明文件(內有Libsvm的參數說明)。
2.由於是matlab,那么就需要將解壓后文件夾里面的windows文件移動到matlab里面去,一般系統安裝的matlab里面有toolbox文件。
3.在matlab中設置路徑
4.以上步驟就安裝的差不多的,接下來要看電腦有沒有編譯器。查看編譯器的方法:
在matlab里面輸入mex -setup/mex -setup -v(查找版本)出現這個則有編譯器
(1若是能找到c++編譯器,可直接嘗試在命令行窗口輸入make,執行make.m程序進行編譯,完成后出現4個后綴為.mexw64文件)
(2若沒能找到C++編譯器,編譯失敗或者一系列不明error,請參考下第二部分:MinGW64配置 ,按其步驟進行)
在命令行窗口中輸入make進行編譯【注意:如果有z黃色警告模式,說明編譯器和matlab的版本不適合,需要重新選擇編譯器的版本,或者下更高版本的matlab(但是我沒管)】
5.測試
按照網上最常見的測試方法,來進行測試。
將Libsvm文件下的測試數據集heart_scale復制到Libsvm\matlab下,后續的操作將在該文件夾下進行,同時將MATLAB工作路徑轉至該文件下(在MATLAB中也可完成文件的復制粘貼工作)。
在命令行窗口輸入:
注意:
1.測試svmtrain的輸入第一個是標簽,第二個數樣本,跟matlab自帶的svmtrain是相反的。
2.”svmtrain“調用svmtrain.exe,heart_scale存放訓練樣本的文件,train.model保存最后訓練出來的模型。
[heart_scale_label,heart_scale_inst]=libsvmread('heart_scale'); model = svmtrain(heart_scale_label,heart_scale_inst) ; [predict_label,accuracy,dec_values] = svmpredict(heart_scale_label,heart_scale_inst,model);
如果輸出為:
#iter:為迭代次數
nu: 為nu-SVC, one-class SVM, and nu-SVR三種類型SVM指定的核函數的參數,默認為0.5
obj: 為SVM文件轉換為二次規划求解得到的最小值
rho: 為判決函數的偏置項b
nSV:為標准支持向量個數
nBSV: 邊界上支持向量的個數
Total nSV :支持向量的總的個數
即為導入libsvm工具箱成功。
二、MinGW-w64 C/C++編譯器下載和安裝
MinGW-w64 C/C++編譯器下載和安裝_<SLF>的博客-CSDN博客_mingw64
ps.過了一周后,可以查到已安裝8.1的編譯器但是matlab找不到編譯器了,又重新下載低版本的還是找不到
解決方法:下載64位的TDM-GCC
如何在Matlab2018a中配置MinGW-w64 C/C++ 編譯器_成都好吃的求推薦的博客-CSDN博客
輸入make,仍然是:
警告: 您使用的是不受支持的 MinGW 編譯器版本。
很久很久以后....警告沒有了……莫名奇妙的可以用了
2022.6.8 matlab2018突然崩了,換了matlab2019b,沒有警告。