【Matlab】安裝libsvm的問題與解決辦法
前言
在支持向量機的眾多程序包中,最著名的當屬台灣大學林智仁老師開發的 libsvm 了,當初我學習支持向量機,代碼實現的時候選擇用 R 語言實現,因為 libsvm 已經在「e1071」包中。
我也曾經嘗試了不下三次給 Matlab 安裝 libsvm 工具箱,查閱了各種網路資料,都以失敗告終,直到有一天終於安裝測試成功,但當時並沒有特意記錄。今天有人問到這個問題,我把這個過程記錄下來,以幫助有需要的人少走一些彎路。
注:本方法在 64 位 windows 系統的 Matlab 2016b 和 2017a 均測試成功。
正文
libsvm 工具箱之所以這麼難安裝,是因為除了普通工具箱的「下載解壓到指定位置,再添加路徑,即可使用」之外,還需要調用 C++ 編譯器編譯幾個文件,才能正常使用。
具體操作步驟如下:
第一步,給Matlab安裝C++編譯器TDM-GCC,下載地址:
http://tdm-gcc.tdragon.net/download
(1) 注意區分32位或64位,下載安裝(我安裝的64位);(2) 配置環境變數
右鍵計算機->屬性->高級系統設置->環境變數,在「環境變數」窗口「系統變數」區域操作:
【新建…】,變數名輸入:MW_MINGW64_LOC,設置為TDM-GCC-64的安裝路徑
(3) 在Matlab命令窗口執行命令
setenv(MW_MINGW64_LOC,C:TDM-GCC-64)
第2個參數為TDM-GCC的安裝路徑,重啟一下Matlab;
注:我試過其它編譯器SDK、MinGW、VC++都以失敗告終。
第二步,添加工具箱 libsvm
下載libsvm,地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/
我下載版本的是libsvm-3.22,解壓得到 libsvm-3.22 文件夾,放到
D:Program FilesMATLABR2016btoolbox
路徑下(也可以是其它位置)
給Matlab添加路徑:【設置路徑】—【添加並包含子文件夾】選擇上述 libsvm-3.22 文件夾,確定。
第三步,編譯文件
(1) Matlab 當前路徑切換到 libsvm-3.22matlab 下;
(2) 命令窗口,輸入 mex -setup 回車
點 【mex -setup C++】選擇編譯器;
注:只要第一步編譯器安裝成功,這一步不會出現問題。
(3) 命令窗口,輸入 make 回車
若提示拒絕訪問錯誤,重新以管理員身份運行 Matlab;
若仍報錯:解決辦法:
將make.m文件中的位於引號之外的CFLAGS替換為COMPFLAGS
重新 make ,出現下圖表示 make 成功:
(4) 將上步生成的 4 個 .mexw64 文件,拷貝粘貼到 libsvm-3.22windows 路徑下
第四步, 測試
load heart_scale.mat %載入測試數據集nmodel = svmtrain(heart_scale_label, heart_scale_inst, -c 1 -g 0.07); %訓練模型n
[predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model); %用模型預測n
這就說明安裝成功!
附: 測試數據集heart_scale.mat下載地址: http://pan.baidu.com/s/1i4I7lh7
參考文獻:
1. Matlab安裝MinGW-w64編譯器 - Desire121的專欄 - CSDN博客
2. Matlab + LibSVM + 問題集錦【20170407】
——————————————————————
原創文章,版權所有,轉載請註明。
推薦閱讀:
※達觀數據推薦演算法實現:協同過濾之item embedding
※如何理解SVM | 支持向量機之我見
※Python · SVM(三)· 核方法
※【機器學習系列文章】SVM初識之如何解決分類問題|原創