支持向量机分类识别的MATLAB别代码

更新时间:2023-05-21 08:30:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

% 支持向量机用于多类模式分类 - 必须选择最优参数 gam,sig2

% 工具箱:LS_SVMlab

% 使用平台:Matlab6.5

% 作者:陆振波,海军工程大学

% 欢迎同行来信交流与合作,更多文章与程序下载请访问我的个人主页

% 电子邮件:luzhenbo@

% 个人主页:

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 = 'RBF_kernel';

gam = 2;

sig2 = 2;

preprocess = 'preprocess';

codefct = 'code_MOC';

% 将“多类”转换成“两类”的编码方案

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

本文来源:https://www.bwwdw.com/article/ww14.html

Top