標籤:

【Matlab】安裝libsvm的問題與解決辦法

前言

在支持向量機的眾多程序包中,最著名的當屬台灣大學林智仁老師開發的 libsvm 了,當初我學習支持向量機,代碼實現的時候選擇用 R 語言實現,因為 libsvm 已經在「e1071」包中。

我也曾經嘗試了不下三次給 Matlab 安裝 libsvm 工具箱,查閱了各種網路資料,都以失敗告終,直到有一天終於安裝測試成功,但當時並沒有特意記錄。今天有人問到這個問題,我把這個過程記錄下來,以幫助有需要的人少走一些彎路。

:本方法在 64 位 windows 系統的 Matlab 2016b 和 2017a 均測試成功。

正文

libsvm 工具箱之所以這麼難安裝,是因為除了普通工具箱的「下載解壓到指定位置,再添加路徑,即可使用」之外,還需要調用 C++ 編譯器編譯幾個文件,才能正常使用。

具體操作步驟如下:

第一步,給Matlab安裝C++編譯器TDM-GCC,下載地址:

tdm-gcc.tdragon.net/dow

(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,地址:csie.ntu.edu.tw/~cjlin/

我下載版本的是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下載地址: pan.baidu.com/s/1i4I7lh

參考文獻:

1. Matlab安裝MinGW-w64編譯器 - Desire121的專欄 - CSDN博客

2. Matlab + LibSVM + 問題集錦【20170407】

——————————————————————

原創文章,版權所有,轉載請註明。


推薦閱讀:

達觀數據推薦演算法實現:協同過濾之item embedding
如何理解SVM | 支持向量機之我見
Python · SVM(三)· 核方法
【機器學習系列文章】SVM初識之如何解決分類問題|原創

TAG:SVM | MATLAB | libsvm |