matlab 使用svm进行分类(适用于二分类和多分类

  • 1. 简单二分类
  • 2. 多分类(不调用工具箱)
  • 3.多分类(调用libsvm工具箱)

1. 简单二分类

clear,clc%% 二分类
%训练数据20×2,20行代表20个训练样本点,第一列代表横坐标,第二列纵坐标
Train_Data =[-3 0;4 0;4 -2;3 -3;-3 -2;1 -4;-3 -4;0 1;-1 0;2 2;3 3;-2 -1;-4.5 -4;2 -1;5 -4;-2 2;-2 -3;0 2;1 -2;2 0];
%Group 20 x 1,20行代表训练数据对应点属于哪一类(1类,-1类)
Train_labels =[1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1]';
TestData = [3 -1;3 1;-2 1;-1 -2;2 -3;-3 -3];%测试数据
classifier  = fitcsvm(Train_Data,Train_labels); %train
test_labels  = predict(classifier ,TestData); % test

这里 test_labels 就是最后的分类结果啦,大家可以按照这个格式对自己的数据进行修改

2. 多分类(不调用工具箱)

因为

%% 多分类
TrainingSet=[ 1 10;2 20;3 30;4 40;5 50;6 66;3 30;4.1 42];%训练数据
TestSet=[3 34; 1 14; 2.2 25; 6.2 63];%测试数据
GroupTrain=[1;1;2;2;3;3;2;2];%训练标签
results =my_MultiSvm(TrainingSet, GroupTrain, TestSet);
disp('multi class problem');
disp(results);

results为最终的分类结果,上述中有用到 my_MultiSvm.m() 函数,以下是my_MultiSvm.m函数的全部内容

function [y_predict,models] = my_MultiSvm(X_train, y_train, X_test)
% multi svm
% one vs all 模型
% Input:
% X_train: n*m矩阵 n为训练集样本数 m为特征数
% y_train: n*1向量 为训练集label,支持任意多种类
% X_test: n*m矩阵 n为测试集样本数 m为特征数
% Output:
% y_predict: n*1向量 测试集的预测结果
%
% Copyright(c) lihaoyang 2020
%y_labels = unique(y_train);n_class = size(y_labels, 1);models = cell(n_class, 1);% 训练n个模型for i = 1:n_classclass_i_place = find(y_train == y_labels(i));svm_train_x = X_train(class_i_place,:);sample_num = numel(class_i_place);class_others = find(y_train ~= y_labels(i));randp = randperm(numel(class_others));svm_train_minus = randp(1:sample_num)';svm_train_x = [svm_train_x; X_train(svm_train_minus,:)];svm_train_y = [ones(sample_num, 1); -1*ones(sample_num, 1)];disp(['生成模型:', num2str(i)])models{i} = fitcsvm(svm_train_x, svm_train_y);endtest_num = size(X_test, 1);y_predict = zeros(test_num, 1);% 对每条数据,n个模型分别进行预测,选择label为1且概率最大的一个作为预测类别for i = 1:test_numif mod(i, 100) == 0disp(['预测个数:', num2str(i)])endbagging = zeros(n_class, 1);for j = 1:n_classmodel = models{j};[label, rat] = predict(model, X_test(i,:));bagging(j) = bagging(j) + rat(2);end[maxn, maxp] = max(bagging);y_predict(i) = y_labels(maxp);end
end

3.多分类(调用libsvm工具箱)

以下代码是调用matlab工具箱libsvm的一种方法

TrainingSet=[ 1 10;2 20;3 30;4 40;5 50;6 66;3 30;4.1 42];%训练数据
TestSet=[3 34; 1 14; 2.2 25; 6.2 63];%测试数据
GroupTrain=[1;1;2;2;3;3;2;2];%训练标签
GroupTest=[1;2;1;3];%测试标签%svm分类
model = svmtrain(GroupTrain,TrainingSet);
% SVM网络预测
[predict_label] = svmpredict(GroupTest,TestSet,model);

之所以放到最后,是因为需要在matlab安装libsvm的工具箱,具体方法可参看此链接在Matlab中安装LibSVM工具箱

下载libsvm也可以百度网盘:百度网盘libsvm
提取码:25ft

matlab 使用svm进行分类含实例代码(适用于二分类和多分类)相关推荐

  1. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  2. 6个步骤教你用Python解数独!(含实例代码)

    前言: 今天为大家带来的内容是:6个步骤教你用Python解数独!(含实例代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,喜欢本文内容的话记得点赞转发收藏不迷路哦! ...

  3. Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF

    Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF 本人硕士写的,有简单版本的纯m代码,也有进阶学习的Sfunction代码,以及simulink模型代码,代码附有详细的注释编号: ...

  4. R语言入门——数据快速读取与查看(含实例代码和参数讲解)

    R语言数据读取 介绍 引言 结构安排 数据读取函数 文本数据 readLines函数 键盘键入数据 scan函数讲解 表格数据 .xlsx文件介绍 表格数据函数参数介绍 快速读入参数介绍 竞赛数据练习 ...

  5. SpringMVC表单数据增删改查简易梳理(含实例代码)

    使用SpringMVC创建表单进行数据的增删改查是javaEE开发的基本功,本人根据自己最近开发的基于jeecms框架的网站平台来梳理数据增删改查的思路. 首先根据所需表单页面设计数据库,定义不同字段 ...

  6. 利用随机森林对特征重要性进行评估(含实例+代码讲解)

    这部分主要讲解一下如何使用,需要看原理的小伙伴,可以到我之前的博客: https://blog.csdn.net/wzk4869/article/details/126379073?spm=1001. ...

  7. matlab聚类分析实例的博客,基于Matlab的模糊聚类分析及其应用 含实例应用.pptx

    基于Matlab的模糊聚类分析及其应用 含实例应用 1;;3;1.预备知识;定义一:(模糊)聚类分析 在科学技术,经济管理中常常需要按一定的标准(相似程度或亲疏关系)进行分类.对所研究的事物按一定标准 ...

  8. matlab中多元线性回归regress函数精确剖析(附实例代码)

    matlab中多元线性回归regress函数精确剖析(附实例代码) 目录 前言 一.何为regress? 二.regress函数中的参数 三.实例分析 总结 前言 regress函数功能十分强大,它可 ...

  9. 【交通标志识别】基于matlab Hog+SVM路标检测与识别【含Matlab源码 1715期】

    一.SVM路标检测识别简介 1 路标识别 完整的路标识别系统包括:图像的获取与预处理,图像分割(路标定位),特征提取,模式分类(路标识别)等部分.其中模式分类是系统的关键技术.较常用的模式分类方法是神 ...

最新文章

  1. 【新周报(050)】Datawhale组队学习
  2. poj3669 Meteor Shower(预处理+bfs)
  3. 文法G[E]分析表分析字符串(i+)-编译原理
  4. 微服务高可用之熔断器实现原理与 Golang 实践
  5. Linux内核分析 - 网络[十五]:陆由表[再议]
  6. 从王者荣耀里我学会的前端新手指引
  7. Design System Application - Chapter 2 字体 Typography
  8. 解决Win10系统使用暴风激活导致的劫持浏览器主页问题
  9. Linux面板对Linux系统维护(Linux运维)全网最详细
  10. pscc2018教程photoshop软件全套入门到精通分享
  11. win10关闭自动屏保
  12. pr用什么显卡比较好_用 PR 剪辑视频应该用什么 CPU 和显卡?
  13. 学校计算机机房维护年度总结,学校计算机机房的管理和维护建议原稿(全文完整版)...
  14. ConstraintLayout实现左中右布局
  15. dumprep.exe
  16. 关于北京工作居住证相关问题
  17. 网易公开课付费视频没有加密,可以随意下载到本地
  18. 九、奈氏准则和香农定理
  19. python输入一个整数和一个字符_【python零基础入门】基础语法之变量、字符串、数字、规则。...
  20. JVM 1.8 永久代---元空间 的变动

热门文章

  1. 两步建立自己的kindle书库
  2. 坚石诚信 java_-坚石诚信
  3. 《零基础学机器学习》笔记-第1课-新手快速上路路径
  4. 阿里P5-多线程相关
  5. 台达(Delta)PLC的PLC-LINK实现
  6. 张宇1000题高等数学 第十四章 二重积分
  7. Cifar-10训练记录
  8. 猫和老鼠汤姆看java_以前看《猫和老鼠》觉得汤姆太笨太好笑,现在看才明白其中的道理...
  9. WINDOWS7 安装node最新版本成功
  10. Hive窗口函数Over和排序函数Rank