SVM 用于将数据分类为两分类或多分类(Matlab代码实现)

news2024/11/15 7:24:06

 👨‍🎓个人主页:研学社的博客 

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

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

2.1 DAGsvm

2.2 SVMtrial 

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

本文旨在帮助可视化学习的分类器,在训练非线性 C-SVM 以将二维数据(2 个特征)分类为 2 个或更多类时。C = Inf 给出硬边距分类器,而 C < Inf 给出 1 范数软边距分类器的情况。

MATLAB 的 quadprog 用于求解对偶变量 a。求解器设置为使用内点方法。高斯径向基函数 (RBF) 核用于生成非线性边界。

在二进制分类文件 (SVMtrial.m) 中:有 6 个不同的训练集可供使用。输出是分类器的 3D 网格图和支持向量的数量。

二元分类的数据集:
(1) 典型
(2) 鞍座

(3) 随机 (4) 随机,椭圆形,带 1 个异常值
(5) 螺旋
(6) 不平衡 + 重叠

在多类分类文件 (DAGsvm.m) 中:有 5 个不同的训练集可供使用。输出是 K*(K-1)/2 分类器的 3D 网格图、训练集图和错误分类的训练样本列表。您还可以让代码根据 [4] 估计 RBF 内核宽度。我使用了 [3] 中的 DAG-SVM 算法进行多类分类。因此,输出网格图以有向无环图(DAG)排列。

多类分类数据集:
(1) (3类) 费舍尔鸢尾花 - 花瓣

(2) (4类) 风扇 带4臂
(3) (6类) 随机圆圈

(4) (5类) 东南亚地图

📚2 运行结果

2.1 DAGsvm

命令框选择自己需要的:

Welcome to DAG-SVM!
[1] (3 classes) FISHER IRIS - PETALS
[2] (4 classes) FAN W/ 4 ARMS
[3] (6 classes) RANDOM CIRCLES
[4] (5 classes) SOUTHEAST ASIAN MAP
[5] (7 classes) RAINBOW
Choose dataset: [3]
Estimated kw (1 vs 6): 15.82
Estimated kw (1 vs 5): 25.82
Estimated kw (1 vs 4): 53.80
Estimated kw (1 vs 3): 108.89
Estimated kw (1 vs 2): 14.45
Estimated kw (2 vs 6): 48.03
Estimated kw (2 vs 5): 7.49
Estimated kw (2 vs 4): 28.20
Estimated kw (2 vs 3): 64.32
Estimated kw (3 vs 6): 180.89
Estimated kw (3 vs 5): 66.41
Estimated kw (3 vs 4): 15.35
Estimated kw (4 vs 6): 104.68
Estimated kw (4 vs 5): 35.06
Estimated kw (5 vs 6): 67.53

运行结果:

2.2 SVMtrial 

其他就不一一例举啦。 

🌈3 Matlab代码实现

部分代:

clc; fprintf('Welcome to DAG-SVM!\n');
if nargin == 0
    fprintf('[1] (3 classes) FISHER IRIS - PETALS\n');
    fprintf('[2] (4 classes) FAN W/ 4 ARMS\n');
    fprintf('[3] (6 classes) RANDOM CIRCLES\n');
    fprintf('[4] (5 classes) SOUTHEAST ASIAN MAP\n');
    fprintf('[5] (7 classes) RAINBOW\n');
    ch = input('Choose dataset: ');             % Let the user choose
    
    switch ch
        case 1 % Set 1: FISHER IRIS (Petals data only)
        load fisheriris meas species;
        x = meas(:,3:4);    % x = [length, width]
        y = zeros(length(species),1);
        y(strcmp(species,'setosa') == 1) = 1;
        y(strcmp(species,'versicolor') == 1) = 2;
        y(strcmp(species,'virginica') == 1) = 3;
        xt = x; yt = y;     % Let all training set = test set
        C = 10;             % Recommended box constraint
        kw = -1;            % Let us estimate kw
    
        case 2 % Set 2: FAN W/ 4 ARMS
        load fan x;
        y = x(:,3); x = x(:,1:2);
        xt = x; yt = y;     % Let all training set = test set
        C = Inf;            % Recommended box constraint
        kw = 10;            % Recommended kernel width
        
        case 3 % Set 3: RANDOM CIRCLES
        x = zeros(600,2); y = ones(length(x),1);
        for j = 1:6
            ind = (1:100) + 100*(j-1);
            y(ind) = j; rd = 2*(rand + 0.5);
            t = 2*pi*rand(1,100); 
            r = rd*rand(1,100);
            x(ind,1) = r.*cos(t) + 10*rand;
            x(ind,2) = r.*sin(t) + 10*rand;
        end
        xt = x; yt = y;     % Let all training set = test set
        C = 1;              % Recommended box constraint
        kw = -1;            % Let us estimate kw
        
        case 4 % Set 4: SOUTHEAST ASIAN MAP
        load SEasia x country;
        y = x(:,3); x = x(:,1:2); % x = [Vsg, Vsl]
        xt = x; yt = y;     % Let all training set = test set
        C = 1e3;            % Recommended box constraint
        kw = 10;            % Recommended kernel width
        
        case 5 % Set 5: RAINBOW
        x = 5*(2*rand(500,2)-1); 
        y = ones(length(x),1);
        for j = 6:-1:1
            y(x(:,2) + 2*j - 7 > 0.5*(x(:,1)...
                + sin(2*x(:,1)))) = 8 - j;
        end
        xt = x; yt = y;     % Let all training set = test set
        C = Inf;            % Recommended box constraint
        kw = 0.5;           % Recommended kernel width
    end
end

%% SVM TRAINING FOR MULTI-CLASS CLASSIFICATION
%  See Platt et al. [1]

K = length(unique(y));                          % number of classes
CL = cell(K); c = 1;                            % classifiers [K x K]
for j = 1:(K-1)
    for k = K:-1:(j+1)
        xPos = x(y == j,:); xNeg = x(y == k,:); % (+) and (-) samples
        pN = size(xPos,1);  nN = size(xNeg,1);  % No. of samples
        Y = [ones(pN,1); -ones(nN,1)];          % Assign (+1) and (-1)

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] Coursera - Machine Learning by Andrew Ng.

[2] Support Vector Machines, Cristianini & Shawe-Taylor, 2000

[3] Platt et al. Large Margin DAGs for Multiclass Classification, Advances in NIPS, 2000
.
[4] Karatzoglou et al. Support Vector Machines in R, Journal of Statistical Software, 15(9), 2006.
[5] Eyo et al. “Development of a Real-Time Objective Flow RegimeIdentifier Using Kernel Methods”, IEEE Trans. on Cybernetics, DOI 10.1109/TCYB.2019.2910257. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/60007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CMake中install的使用

CMake中的install命令用于指定安装时要运行的规则&#xff0c;其格式如下&#xff1a; install(TARGETS targets... [EXPORT <export-name>][RUNTIME_DEPENDENCIES args...|RUNTIME_DEPENDENCY_SET <set-name>][[ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDL…

基于单片机的电压电流表设计

原理图&#xff1a; 部分程序&#xff1a; #include "stc15.h" #include "delay.h" #include "timer.h" #include "TM7707.h" #include "LCD1602.h" #include "eeprom.h" #include "stdio.h" #include…

【数学】双根号求值域问题

∣双根号求值域问题NightguardSeries.∣\begin{vmatrix}\Huge{\textsf{ 双根号求值域问题 }}\\\texttt{ Nightguard Series. }\end{vmatrix}∣∣∣∣∣​ 双根号求值域问题 Nightguard Series. ​∣∣∣∣∣​ 求 f(x)3x−63−xf(x)\sqrt{3x-6}\sqrt{3-x}f(x)3x−6​3−x​ 的…

开发工具——gdb

开发工具gdb gdb在Linux下负责程序的调试。 gdb相较于vs2019的调试&#xff0c;是不方便的。图形化界面调试确实是一种进步的现象。 先编写一个简单的程序&#xff0c;如果不支持在for循环中定义变量&#xff0c;要在编译指令后面加上-stdc99选项。 要编译的文件和要生成的文…

Spring 源码编译

Spring 源码编译&#xff0c;一定要选好版本&#xff01;&#xff01;&#xff01; Spring 源码编译&#xff0c;一定要选好版本&#xff01;&#xff01;&#xff01; Spring 源码编译&#xff0c;一定要选好版本&#xff01;&#xff01;&#xff01; 重要的事说三遍。 Spri…

MYSQL用函数请三思

背景&#xff1a;最近公司有个同事遇到个需求需要用到mysql sleep函数&#xff0c;但结果却大出意料. 测试如下&#xff1a; 表&#xff1a; CREATE TABLE test_sleep ( id int NOT NULL AUTO_INCREMENT, a int NOT NULL, b int NOT NULL, PRIMARY KEY (id), KEY a (a) ) ENGIN…

电子学会2021年3月青少年软件编程(图形化)等级考试试卷(一级)答案解析

青少年软件编程&#xff08;图形化&#xff09;等级考试试卷&#xff08;一级&#xff09; 分数&#xff1a;100.00 题数&#xff1a;37 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1. 花花幼儿园有三个班。根据下面三句话&…

CentosLinux 7 字符安装教程

打开VMware虚拟机,点击文件 — 新建虚拟机选项。在弹出的对话框中选择自定义(高级)选项。单机下一步。 以下步骤根据自己的所需自行配置

[附源码]Python计算机毕业设计Django酒店在线预约咨询小程序

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

健身中心管理系统/健身房管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&…

【OpenCV-Python】教程:3-16 利用Grabcut交互式前景提取

OpenCV Python Grabcut分割 【目标】 Grabcut 算法创建一个交互程序 【理论】 从用户角度是如何工作的呢&#xff1f;用户在需要的目标上初始绘制一个矩形&#xff0c;前景目标必须完全在矩形内部&#xff0c;算法迭代的去分割然后得到更好的效果&#xff0c;但是有些情况下…

Java9-17新特性解读,了解少于3个你可能脱节了

前言 Java8出来这么多年后&#xff0c;已经成为企业最成熟稳定的版本&#xff0c;相信绝大部分公司用的还是这个版本&#xff0c;但是一眨眼今年Java19都出来了&#xff0c;相信很多Java工程师忙于学习工作对新特性没什么了解&#xff0c;有的话也仅限于某一块。 本篇就是博主对…

【论文笔记】Radatron: Accurate Detection Using Multi-Resolution Cascaded MIMO Radar

文章及补充材料链接&#xff1a;https://jguan.page/Radatron/ 理解本文需要一些电磁波与雷达信号处理相关的理论知识。 1. 引言 雷达的角度分辨率通常很低。雷达的角度分辨率与雷达的天线孔径成反比&#xff0c;因此毫米波雷达要达到激光雷达的角度分辨率&#xff0c;需要3000…

黑盒测试用例设计 - 因果图法

说明 因果图法是一种适合于描述对多种输入条件组合的测试方法根据输入条件的组合、约束关系和输出条件的因果关系&#xff0c;分析输入条件的各种组合情况&#xff0c;从而设计测试用例的方法它适合于检查程序输入条件涉及的各种组合情况 使用步骤 第一步&#xff1a;根据功…

60岁首席工程师被SpaceX边缘化,主管:我怕他退休或死了

金磊 发自 凹非寺量子位 | 公众号 QbitAI在SpaceX&#xff0c;连首席工程师竟也能遭遇职场边缘化。故事的主人公叫做John Johnson&#xff08;姑且叫他“逊哥”&#xff09;&#xff0c;他在2018年加入SpaceX。当时的逊哥已经58岁&#xff0c;但在光学工程领域可谓颇有建树。刚…

Java---数据库---MyBatisPlus

MyBatisPlus1&#xff0c;MyBatisPlus入门案例与简介1.1 入门案例步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤3:勾选配置使用技术步骤4:pom.xml补全依赖步骤5:添加MP的相关配置信息步骤6:根据数据库表创建实体类步骤7:创建Dao接口步骤8:编写引导类步骤9:编写测试类1.2 M…

Java项目:ssm图书馆管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 基于ssm的图书馆管理系统.主要功能包括&#xff1a;图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 用户分为…

ArrayList源码阅读笔记

1. 基础知识 1.1 概念 ArrayList是可以动态增长和缩减的索引序列&#xff0c;它是基于数组实现的List类。该类封装了一个动态再分配的Object[]数组&#xff0c;每个对象都有一个capacity属性&#xff0c;表示它们所封装的Object[]数组长度&#xff0c;当向ArrayList中添加元素…

DAMOYOLO windows 单卡训练

最近达摩院放出了目前最能打的yolo算法&#xff0c;时间和精度都得到了提升 目前代码已经开源&#xff1a; 代码地址&#xff1a;GitHub - tinyvision/DAMO-YOLO: DAMO-YOLO: a fast and accurate object detection method with some new techs, including NAS backbones, effi…

详细的科技特长生路径和成长规划

2021年&#xff0c;教育部印发了《关于进一步加强和改进普通高等学校艺术类专业考试招生工作的指导意见》&#xff0c;在其中规范了艺术类专业的招生政策&#xff0c;包括艺术类考试和高水平艺术团考试&#xff0c;其中明确自2024年起&#xff0c;高校高水平艺术团不再从高校招…