zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于模式分类的双支持向量机(Matlab代码实现)

MATLAB模式代码 实现 基于 支持 分类 向量
2023-09-14 09:05:21 时间

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。 

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

文献来源:

💥1 概述

一种二进制SVM分类器,通过解决两个相关的SVM类型问题来确定两个非平行平面,每个问题都比传统SVM中的小。Twin SVM公式是通过广义特征值实现近端SVM的精神。在几个基准数据集上,Twin SVM不仅速度快,而且具有良好的泛化能力。双SVM对于自动发现数据的二维投影也很有用。

📚2 运行结果

clc;clearvars;close all;rng default;% Read Datarun('data_heartstatlog.m');% Get Data and Labelsfeatures=data(:,1:end-1);labels=data(:,end);% Normalize labelslabels(labels==2)=-1;% Separate training and test data (80:20 split)total_samples=size(features,1);train_samples=round(0.8*total_samples);% Define training and test samplesxTrain=features(1:train_samples,:);yTrain=labels(1:train_samples,:);xTest=features(train_samples+1:end,:);yTest=labels(train_samples+1:end,:);% Define hyperparameter valuesC1=0.1; C2=0.05;% Run Twin SVM (Linear) [ yPred, accuracy ] = LinearTWSVM( xTrain, yTrain, xTest, yTest, C1, C2 );  disp('Accuracy (Linear) is'); accuracy  % Run Twin SVM (Kernel)kernel_type=3; kernel_param=0.95;% Run Kernel Twin SVM[ yPred, accuracy ] = KernelTWSVM( xTrain, yTrain, xTest, yTest, C1, C2, kernel_type, kernel_param ); disp('Accuracy (Kernel) is');accuracy 
Heart statlog data in useAccuracy (Linear) isaccuracy =   83.3333Accuracy (Kernel) isaccuracy =   75.9259>>

clc;clearvars;close all;
rng default;

% Read Data
run('data_heartstatlog.m');

% Get Data and Labels
features=data(:,1:end-1);
labels=data(:,end);

% Normalize labels
labels(labels==2)=-1;


% Separate training and test data (80:20 split)
total_samples=size(features,1);
train_samples=round(0.8*total_samples);

% Define training and test samples
xTrain=features(1:train_samples,:);
yTrain=labels(1:train_samples,:);
xTest=features(train_samples+1:end,:);
yTest=labels(train_samples+1:end,:);

% Define hyperparameter values
C1=0.1; C2=0.05;

% Run Twin SVM (Linear)
 [ yPred, accuracy ] = LinearTWSVM( xTrain, yTrain, xTest, yTest, C1, C2 );
 
 disp('Accuracy (Linear) is');
 accuracy
 
 
% Run Twin SVM (Kernel)
kernel_type=3; kernel_param=0.95;

% Run Kernel Twin SVM
[ yPred, accuracy ] = KernelTWSVM( xTrain, yTrain, xTest, yTest, C1, C2, kernel_type, kernel_param );
 
disp('Accuracy (Kernel) is');
accuracy

Heart statlog data in use
Accuracy (Linear) is

accuracy =

   83.3333

Accuracy (Kernel) is

accuracy =

   75.9259

>> 

🎉3 参考文献

[1]Jayadeva, Khemchandani, R., and Suresh Chandra. "Twin support vector machines for pattern classification." IEEE Transactions on pattern analysis and machine intelligence 29.5 (2007): 905-910.

🌈4 Matlab代码实现