当前位置:网站首页>【数据分析】基于MATLAB实现SVDD决策边界可视化
【数据分析】基于MATLAB实现SVDD决策边界可视化
2022-08-03 02:08:00 【matlab_dingdang】
1 内容介绍
在现实世界中,万事万物都有着其特征,这样的特征或多或少、或重要或不重要。人们通过事物的特征可以确定其所属分类,但是当事物的特征都很多时,如果人们依靠传统的方法对事物进行分类就显得耗时耗力,并且分类的精确性不高。而分类作为一种预测模型,如果分类的精确性低或用时长,则这种预测将变得毫无价值。因此人们提出了各种分类模型来对事物进行预测,其中支持向量机和支持向量描述数据在对高维数据进行预测时有着一定的优势,并且根据不同的要求,对这两种算法的改进应用到了现实生活中的许多领域。 首先,本文研究了数据挖掘分类算法中的支持向量机的背景和理论,分析并总结了SVM各种改进方法的研究现状。
2 仿真代码
function x_range = grid_range(x, varargin)
%{
% DESCRIPTION
Compute the range of grid
x_range = grid_range(x)
x_range = grid_range(x, 'r', 0.5)
x_range = grid_range(x, 'n', 200)
x_range = grid_range(x, 'r', 0.5, 'n', 200)
INPUT
x Training inputs (N*1)
N: number of samples
r Radio of expansion (0<r<1)
n Number of grids
OUTPUT
x_range range of grid
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
% Default Parameters setting
r = 0.5; % radio of expansion (0<r<1)
n = 2*size(x, 1); % number of grids
% Parameters setting
if ~rem(nargin, 2)
error('Parameters to rvm_train should be pairs')
end
numParameters = (nargin-1)/2;
if numParameters ~= 0
for i =1:numParameters
Parameters = varargin{(i-1)*2+1};
value = varargin{(i-1)*2+2};
switch Parameters
%
case 'r'
r = value;
%
case 'n'
n = value;
end
end
end
%
xlim_1 = min(x);
xlim_2 = max(x);
% min
if xlim_1<0
xlim_1 = xlim_1*(1+r);
else
xlim_1 = xlim_1*(1-r);
end
% max
if xlim_2<0
xlim_2 = xlim_2*(1-r);
else
xlim_2 = xlim_2*(1+r);
end
% range of grid
x_range = linspace(xlim_1, xlim_2, n);
end
function [traindata, testdata, trainlabel, testlabel] = prepareData
%{
% DESCRIPTION
Prepare the data for SVDD_WOA
[traindata, testdata, trainlabel, testlabel] = prepareData
OUTPUT
traindata Training data
testdata Testing data
trainlabel Training label
trainlabel Training label
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
load .\data\banana.mat
traindata(:, 1) = banana(1:2:500, 1);
traindata(:, 2) = banana(1:2:500, 2);
testdata(:, 1) = banana(501:2:1000, 1);
testdata(:, 2) = banana(501:2:1000, 2);
trainlabel = ones(size(traindata, 1), 1);
testlabel = -ones(size(testdata, 1), 1);
end
function [rho, X1, X2] = decision_boundary(model, traindata)
%{
% DESCRIPTION
Computation of decision boundary
[rho, X1, X2] = decision_boundary(model, traindata)
INPUT
model SVDD model
N: number of samples
traindata Training data
OUTPUT
rho Bias term
X1, X2 Grid range
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
% Compute the range of grid
x1_range = grid_range(traindata(:, 1));
x2_range = grid_range(traindata(:, 2));
% grid
[X1, X2] = meshgrid(x1_range, x2_range);
X_Grid = [X1(:), X2(:)];
% the grid label is only for the input of the function 'libsvmpredict'
grid_label = ones(size(X_Grid, 1), 1);
% Predict the label of each grid point
[~, ~, rho_0] = libsvmpredict(grid_label, X_Grid, model);
rho = reshape(rho_0, size(X1, 1), size(X1, 2));
end
function [traindata, testdata, trainlabel, testlabel] = prepareData
%{
% DESCRIPTION
Prepare the data for SVDD_WOA
[traindata, testdata, trainlabel, testlabel] = prepareData
OUTPUT
traindata Training data
testdata Testing data
trainlabel Training label
trainlabel Training label
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
load .\data\banana.mat
traindata(:, 1) = banana(1:2:500, 1);
traindata(:, 2) = banana(1:2:500, 2);
testdata(:, 1) = banana(501:2:1000, 1);
testdata(:, 2) = banana(501:2:1000, 2);
trainlabel = ones(size(traindata, 1), 1);
testlabel = -ones(size(testdata, 1), 1);
end
1 内容介绍
在现实世界中,万事万物都有着其特征,这样的特征或多或少、或重要或不重要。人们通过事物的特征可以确定其所属分类,但是当事物的特征都很多时,如果人们依靠传统的方法对事物进行分类就显得耗时耗力,并且分类的精确性不高。而分类作为一种预测模型,如果分类的精确性低或用时长,则这种预测将变得毫无价值。因此人们提出了各种分类模型来对事物进行预测,其中支持向量机和支持向量描述数据在对高维数据进行预测时有着一定的优势,并且根据不同的要求,对这两种算法的改进应用到了现实生活中的许多领域。 首先,本文研究了数据挖掘分类算法中的支持向量机的背景和理论,分析并总结了SVM各种改进方法的研究现状。
2 仿真代码
function x_range = grid_range(x, varargin)
%{
% DESCRIPTION
Compute the range of grid
x_range = grid_range(x)
x_range = grid_range(x, 'r', 0.5)
x_range = grid_range(x, 'n', 200)
x_range = grid_range(x, 'r', 0.5, 'n', 200)
INPUT
x Training inputs (N*1)
N: number of samples
r Radio of expansion (0<r<1)
n Number of grids
OUTPUT
x_range range of grid
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
% Default Parameters setting
r = 0.5; % radio of expansion (0<r<1)
n = 2*size(x, 1); % number of grids
% Parameters setting
if ~rem(nargin, 2)
error('Parameters to rvm_train should be pairs')
end
numParameters = (nargin-1)/2;
if numParameters ~= 0
for i =1:numParameters
Parameters = varargin{(i-1)*2+1};
value = varargin{(i-1)*2+2};
switch Parameters
%
case 'r'
r = value;
%
case 'n'
n = value;
end
end
end
%
xlim_1 = min(x);
xlim_2 = max(x);
% min
if xlim_1<0
xlim_1 = xlim_1*(1+r);
else
xlim_1 = xlim_1*(1-r);
end
% max
if xlim_2<0
xlim_2 = xlim_2*(1-r);
else
xlim_2 = xlim_2*(1+r);
end
% range of grid
x_range = linspace(xlim_1, xlim_2, n);
end
function [traindata, testdata, trainlabel, testlabel] = prepareData
%{
% DESCRIPTION
Prepare the data for SVDD_WOA
[traindata, testdata, trainlabel, testlabel] = prepareData
OUTPUT
traindata Training data
testdata Testing data
trainlabel Training label
trainlabel Training label
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
load .\data\banana.mat
traindata(:, 1) = banana(1:2:500, 1);
traindata(:, 2) = banana(1:2:500, 2);
testdata(:, 1) = banana(501:2:1000, 1);
testdata(:, 2) = banana(501:2:1000, 2);
trainlabel = ones(size(traindata, 1), 1);
testlabel = -ones(size(testdata, 1), 1);
end
function [rho, X1, X2] = decision_boundary(model, traindata)
%{
% DESCRIPTION
Computation of decision boundary
[rho, X1, X2] = decision_boundary(model, traindata)
INPUT
model SVDD model
N: number of samples
traindata Training data
OUTPUT
rho Bias term
X1, X2 Grid range
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
% Compute the range of grid
x1_range = grid_range(traindata(:, 1));
x2_range = grid_range(traindata(:, 2));
% grid
[X1, X2] = meshgrid(x1_range, x2_range);
X_Grid = [X1(:), X2(:)];
% the grid label is only for the input of the function 'libsvmpredict'
grid_label = ones(size(X_Grid, 1), 1);
% Predict the label of each grid point
[~, ~, rho_0] = libsvmpredict(grid_label, X_Grid, model);
rho = reshape(rho_0, size(X1, 1), size(X1, 2));
end
function [traindata, testdata, trainlabel, testlabel] = prepareData
%{
% DESCRIPTION
Prepare the data for SVDD_WOA
[traindata, testdata, trainlabel, testlabel] = prepareData
OUTPUT
traindata Training data
testdata Testing data
trainlabel Training label
trainlabel Training label
Created on 18th October 2019, by Kepeng Qiu.
-------------------------------------------------------------%
%}
load .\data\banana.mat
traindata(:, 1) = banana(1:2:500, 1);
traindata(:, 2) = banana(1:2:500, 2);
testdata(:, 1) = banana(501:2:1000, 1);
testdata(:, 2) = banana(501:2:1000, 2);
trainlabel = ones(size(traindata, 1), 1);
testlabel = -ones(size(testdata, 1), 1);
end
3 运行结果
4 参考文献
[1]李传亮. 基于SVDD和参数辨识的模拟电路故障诊断方法研究[D]. 南京航空航天大学.
[2]肖托. 一种改进的支持向量数据描述算法[D]. 哈尔滨工程大学, 2013.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
3 运行结果
4 参考文献
[1]李传亮. 基于SVDD和参数辨识的模拟电路故障诊断方法研究[D]. 南京航空航天大学.
[2]肖托. 一种改进的支持向量数据描述算法[D]. 哈尔滨工程大学, 2013.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
边栏推荐
猜你喜欢
随机推荐
mysql-installer安装教程(详细图文)
monkey 压测
【静态类型和动态类型 编译检查和运行检查 Objective-C中】
ES6 新特性:Class 的基本语法
FLIR E95 在8层楼看马路上行驶的CAR的热成像形态?
5.软件测试-----自动化测试
什么样的存储服务,才能成为企业数字化创新“加速器”?
QCheckBox、margin、border、pandding、QHoxLayout、QSplitter、QSpacerItem
任意版本JLink驱动官方下载指引
常见钓鱼手法及防范
LabVIEW程序框图保存为图像
radio button、qss文件环境配置
Mysql-如何进行慢SQL查询
Spark SQL简介
ROS计算图——rqt_graph
二叉树的前序遍历、中序遍历、后序遍历和层序遍历
常用工具链和虚拟环境-Cygwin
initramfs详解-----初识initramfs
Topic Modeling of Short Texts: A Pseudo-Document View
SPI机制是什么?