matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题
在科研中需要用到支持向量機(Support Vector Machines, SVM)來進行分類,而目前比較成熟的用于實現SVM的軟件包則首推LibSVM。LibSVM目前的版本已經能直接在MATLAB中使用了,雖然MATLAB已經提供了諸如svmtrain等SVM相關的函數,可是相比LibSVM的易用性以及其強大的功能還是要差了不少。不僅如此,目前有關LibSVM的資料在互聯網上也比較豐富,所以最終選擇LibSVM在MATLAB環境下實現SVM分類樣品會是一個很不錯的選擇。
LibSVM可以直接從其主頁上下載到,我們所需要用到的就是MATLAB版本,不過仍然需要對其進行一個編譯。這個過程十分簡單,不過需要你已經安裝了MATLAB的較新的版本(比如2009以后的版本,因為較舊的MATLAB版本不能識別較新的VS,而只能使用VC++ 6.0),以及Microsoft Visual Studio。
1.編譯LibSVM的MATLAB版本
如果你的電腦上已經安裝了如MATLAB的較新版本,以及Microsoft Visual Studio,那么你可以直接將下載的LibSVM解壓出來并拷貝到MATLAB的工作目錄下(這個過程不是必須,但會更為方便接下來的處理)。然后在MATLAB中將LibSVM目錄添加到MATLAB的識別路徑下(Add path),并將LibSVM下的MATLAB文件夾設置為MATLAB的當前工作目錄。
接著在MATLAB命令行窗口中輸入mex -setup,回車執行命令選擇編譯器。需要注意的是mex跟-setup之間有個空格。不要選擇MATLAB的默認編譯器,而手動選擇Microsoft的VS編譯器(只需告訴MATLAB其安裝路徑即可)。
設置好編譯器,在MATLAB命令行窗口中輸入make,即可開始對LibSVM進行編譯了。如果沒有什么錯誤提示,最終編譯成功之后,在LibSVM文件夾下的MATLAB文件夾里將有四個以.mexw32結尾的編譯完成的可執行文件。
2.加載數據集驗證程序
編譯完畢之后,我們可以加載數據集以驗證程序是否編譯成功。但是這里就出現了問題,如果使用以前的很多教程和文章中出現的諸如
load heart_scale
來載入heart_scale數據文件,將會出現如下所示的錯誤:
??? Error using ==> load
Number of columns on line 2 of ASCII file
…\MATLAB\libsvm\heart_scale
must be the same as previous lines.
有人說好像這是因為heart_scale數據集是一個C++類型的文件,所以使用MATLAB的load載入而不能成功。
所以,現在需要使用LibSVM提供的libsvmread函數來讀取數據文件,讀取格式如下:
[label_vector, instance_matrix] = libsvmread(‘heart_scale’);
問題是,這樣仍然不能成功,而提示如下的錯誤:
can’t open input file heart_scale
但是我們可以解決這個問題,通過這樣的方式:
1.將位于LibSVM文件夾下的heart_scale數據文件拷貝到當前工作目錄(MATLAB)中;
或
2.將LibSVM文件夾設置為當前工作目錄;
如此,再執行libsvmread命令,即可將數據文件讀取進來進行一些基本的處理了,使用
model = svmtrain(label_vector,instance_matrix);
訓練SVM模型;
使用
[predict_label, accuracy, decision_values]?= svmpredict(label_vector,instance_matrix,model);
得到模型的預測結果:
Accuracy = 86.6667% (234/270) (classification)
總結
以上是生活随笔為你收集整理的matlab中的libsvm怎么录入数据啊,LibSVM在MATLAB中使用时的几个问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 405 宝塔钩子_点击数据库管理,ngi
- 下一篇: angular7.2构建包如何兼容ie_