SVM Matlab 工具箱分類實例應用及理論介紹
1. libsvm
a. 安裝操作
b. 主要操作
svmtrain
model= svmtrain(train_label, train_matrix, ['libsvm_options']);
- train_label表示訓練集的標籤。
- train_matrix表示訓練集的屬性矩陣。
- libsvm_options是需要設置的一系列參數,各個參數可參見《libsvm 參數說明.txt》,裏面介紹的很詳細,中英文都有的。如果用迴歸的話,其中的-s參數值應爲3。
- model:是訓練得到的模型,是一個結構體(如果參數中用到-v,得到的就不是結構體,對於分類問題,得到的是交叉檢驗下的平均分類準確率;對於迴歸問題,得到的是均方誤差)。
svmpredict
[predicted_label, accuracy/mse, decision_values]=svmpredict(test_label, test_matrix, model, ['libsvm_options']);
- test _label表示測試集的標籤(這個值可以不知道,因爲作預測的時候,本來就是想知道這個值的,這個時候,隨便制定一個值就可以了,只是這個時候得到的mse就沒有意義了)。
- test _matrix表示測試集的屬性矩陣。
- model是上面訓練得到的模型。
- libsvm_options是需要設置的一系列參數。
- predicted_label表示預測得到的標籤。
- accuracy/mse是一個3*1的列向量,其中第1個數字用於分類問題,表示分類準確率;後兩個數字用於迴歸問題,第2個數字表示mse;第三個數字表示平方相關係數(也就是說,如果分類的話,看第一個數字就可以了;迴歸的話,看後兩個數字)。
- decision_values表示決策值(一般好像不怎麼用)。
測試
>> load heart_scale.mat
>> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);
分類流程
- 選定訓練集和測試機>>規範化>>特徵選擇
- 利用訓練集訓練分類器得到 model
- 利用model 對測試集進行預測
- 分類器性能評測
normalization
規範化 [0 1] [-1,1]
function normal = normalization(x,kind)
% by Li Yang BNU MATH Email:[email protected] QQ:516667408
% last modified 2009.2.24
%
if nargin < 2
kind = 2;%kind = 1 or 2 表示第一類或第二類規範化
end
[m,n] = size(x);
normal = zeros(m,n);
%% normalize the data x to [0,1]
if kind == 1
for i = 1:m
ma = max( x(i,:) );
mi = min( x(i,:) );
normal(i,:) = ( x(i,:)-mi )./( ma-mi );
end
end
%% normalize the data x to [-1,1]
if kind == 2
for i = 1:m
mea = mean( x(i,:) );
va = var( x(i,:) );
normal(i,:) = ( x(i,:)-mea )/va;
end
end