1. 程式人生 > >matlab進行支援向量機(SVM)模型訓練,Libsvm進行svm模型訓練詳解

matlab進行支援向量機(SVM)模型訓練,Libsvm進行svm模型訓練詳解

在matlab中進行SVM模型訓練,通常有兩種選擇:
注意:
a、如果matlab安裝了LibSVM,在使用matlab自帶的SVM時,需要進行搜尋路徑重新設定
     路徑重新設定方法:在matlab軟體主視窗中【主頁】--【設定路徑】移除所有與libsvm相關的路徑。
        (需要時,再新增即可)

b、MATLAB2014a (64bit)建議安裝libsvm-3.11版本,實測其它版本會有各種各樣的問題

一、matlab自帶的SVM進行模型訓練
採用matlab自帶的SVM,其主要用到的兩個函式訓練SVM模型函式  svmtrain();分類函式  svmclassify()

下面用經典Iris資料集進行分類為例,進行講解

clear;
clc;
%%
%
%載入資料,Iris資料下載地址  http://archive.ics.uci.edu/ml/index.php
data=load('C:\Desktop\DeepLearningFloder\IrisSet.txt');  
label = [zeros(50,1);ones(50,1)];
%%
train_data = [data(1:25,1:2);data(51:75,1:2)];
train_label = [label(1:25,1);label(51:75,1)];
test_data = [data(26:50,1:2);data(76:100,1:2)];
test_label = [label(26:50,1);label(76:100,1)];

%% 建立模型並預測  採用matlab自帶的
SVMSVMStruct=svmtrain(train_data,train_label,'showplot',true)    %注意matlab自帶的svm視覺化只能2-D顯示
Group=svmclassify(SVMStruct,test_data,'showplot',true);
fprintf('使用svmclassify,正確率:%f\n' ,sum(Group==test_label)/size(test_label,1));  %計算正確率



二、安裝libsvm-3.11版本 
採用libsvm,其主要用到的兩個函式訓練libsvm模型函式  svmtrain();預測函式svmpredict();
下面用經典Iris資料集進行分類為例,進行講解
load iris_new.data

iris_train_label=iris_new([1:40 51:90 101:140],end);%每類取40個數據作為訓練,共120個訓練資料
iris_train_data=iris_new([1:40 51:90 101:140],1:end-1);

iris_test_label=iris_new([41:50 91:100 141:150],end);%每類取10個數據作為測試,共30個測試資料
iris_test_data=iris_new([41:50 91:100 141:150],1:end-1);

model=svmtrain(iris_train_label,iris_train_data);
[iris_predict_label,iris_accuracy]=svmpredict(iris_test_label,iris_test_data,model);


注意:
由於matlab自帶的模型訓練函式和libsvm模型訓練函式名稱是一樣的,為了防止使用中混亂出錯,需要設定好路徑。
安裝了libsvm,如果想再退回使用matlab自帶的svm,將libsvm路徑刪除即可。如果想再使用libsvm,再新增即