#matlab中文論壇-SVM01.md

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);

分類流程

  1. 選定訓練集和測試機>>規範化>>特徵選擇
  2. 利用訓練集訓練分類器得到 model
  3. 利用model 對測試集進行預測
  4. 分類器性能評測

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章