?? classification_ls_svmlab.m
字號:
% 支持向量機用于多類模式分類 - 必須選擇最優參數 gam,sig2
% 工具箱:LS_SVMlab
% 使用平臺:Matlab6.5
% 作者:陸振波,海軍工程大學
% 歡迎同行來信交流與合作,更多文章與程序下載請訪問我的個人主頁
% 電子郵件:luzhenbo@yahoo.com.cn
% 個人主頁:http://luzhenbo.88uu.com.cn
clc
clear
close all
%---------------------------------------------------
% 產生訓練樣本與測試樣本,每一列為一個樣本
n1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x1 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特別注意:這里的目標與神經網絡不同
n2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];
x2 = [1*ones(1,5),2*ones(1,5),3*ones(1,5)]; % 特別注意:這里的目標與神經網絡不同
xn_train = n1; % 訓練樣本
dn_train = x1; % 訓練目標
xn_test = n2; % 測試樣本
dn_test = x2; % 測試目標
%---------------------------------------------------
% 參數設置
X = xn_train';
Y = dn_train';
Xt = xn_test';
Yt = dn_test';
type = 'c';
kernel_type = 'lin_kernel';
gam = 10;
sig2 =[];
preprocess = 'preprocess';
codefct = 'code_OneVsOne';
% 將“多類”轉換成“兩類”的編碼方案
% 1. Minimum Output Coding (code_MOC)
% 2. Error Correcting Output Code (code_ECOC)
% 3. One versus All Coding (code_OneVsAll)
% 4. One Versus One Coding (code_OneVsOne)
%---------------------------------------------------
% 編碼
[Yc,codebook,old_codebook] = code(Y,codefct)
%---------------------------------------------------
% 交叉驗證優化參數
%[gam,sig2] = tunelssvm({X,Yc,type,gam,sig2,kernel_type,preprocess})
%---------------------------------------------------
% 訓練與測試
[alpha,b] = trainlssvm({X,Yc,type,gam,sig2,kernel_type,preprocess}); % 訓練
Yd0 = simlssvm({X,Yc,type,gam,sig2,kernel_type,preprocess},{alpha,b},Xt); % 分類
%---------------------------------------------------
% 解碼
Yd = code(Yd0,old_codebook,[],codebook);
%---------------------------------------------------
% 結果統計
Result = ~abs(Yd-Yt) % 正確分類顯示為1
Percent = sum(Result)/length(Result) % 正確分類率
%---------------------------------------------------
% 注意:以這兩種寫法等價
% -- 1 --
% [Yc,codebook,old_codebook] = code(Y, codefct)
% [alpha, b] = trainlssvm({X,Yc,type,gam,sig2,kernel,preprocess})
% Yd0 = simlssvm({X,Yc,type,gam,sig2,kernel}, {alpha,b}, Xt)
% Yd = code(Yd0,old_codebook,[],codebook)
% -- 2 --
% model = initlssvm(X,Y,type,gam,sig2,kernel,preprocess)
% model = changelssvm(model,'codetype',codefct)
% model = trainlssvm(model)
% Yd = simlssvm(model, Xt)
hold on
plotlssvm({X,Y,type,gam,sig2,'lin_kernel'},{alpha,b});
hold off
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -