matlab 使用svm进行分类含实例代码(适用于二分类和多分类)
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进行分类含实例代码(适用于二分类和多分类)相关推荐
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- 6个步骤教你用Python解数独!(含实例代码)
前言: 今天为大家带来的内容是:6个步骤教你用Python解数独!(含实例代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,喜欢本文内容的话记得点赞转发收藏不迷路哦! ...
- Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF
Matlab学习卡尔曼滤波的各种实例代码 KF,EKF,UKF,CKF 本人硕士写的,有简单版本的纯m代码,也有进阶学习的Sfunction代码,以及simulink模型代码,代码附有详细的注释编号: ...
- R语言入门——数据快速读取与查看(含实例代码和参数讲解)
R语言数据读取 介绍 引言 结构安排 数据读取函数 文本数据 readLines函数 键盘键入数据 scan函数讲解 表格数据 .xlsx文件介绍 表格数据函数参数介绍 快速读入参数介绍 竞赛数据练习 ...
- SpringMVC表单数据增删改查简易梳理(含实例代码)
使用SpringMVC创建表单进行数据的增删改查是javaEE开发的基本功,本人根据自己最近开发的基于jeecms框架的网站平台来梳理数据增删改查的思路. 首先根据所需表单页面设计数据库,定义不同字段 ...
- 利用随机森林对特征重要性进行评估(含实例+代码讲解)
这部分主要讲解一下如何使用,需要看原理的小伙伴,可以到我之前的博客: https://blog.csdn.net/wzk4869/article/details/126379073?spm=1001. ...
- matlab聚类分析实例的博客,基于Matlab的模糊聚类分析及其应用 含实例应用.pptx
基于Matlab的模糊聚类分析及其应用 含实例应用 1;;3;1.预备知识;定义一:(模糊)聚类分析 在科学技术,经济管理中常常需要按一定的标准(相似程度或亲疏关系)进行分类.对所研究的事物按一定标准 ...
- matlab中多元线性回归regress函数精确剖析(附实例代码)
matlab中多元线性回归regress函数精确剖析(附实例代码) 目录 前言 一.何为regress? 二.regress函数中的参数 三.实例分析 总结 前言 regress函数功能十分强大,它可 ...
- 【交通标志识别】基于matlab Hog+SVM路标检测与识别【含Matlab源码 1715期】
一.SVM路标检测识别简介 1 路标识别 完整的路标识别系统包括:图像的获取与预处理,图像分割(路标定位),特征提取,模式分类(路标识别)等部分.其中模式分类是系统的关键技术.较常用的模式分类方法是神 ...
最新文章
- 【新周报(050)】Datawhale组队学习
- poj3669 Meteor Shower(预处理+bfs)
- 文法G[E]分析表分析字符串(i+)-编译原理
- 微服务高可用之熔断器实现原理与 Golang 实践
- Linux内核分析 - 网络[十五]:陆由表[再议]
- 从王者荣耀里我学会的前端新手指引
- Design System Application - Chapter 2 字体 Typography
- 解决Win10系统使用暴风激活导致的劫持浏览器主页问题
- Linux面板对Linux系统维护(Linux运维)全网最详细
- pscc2018教程photoshop软件全套入门到精通分享
- win10关闭自动屏保
- pr用什么显卡比较好_用 PR 剪辑视频应该用什么 CPU 和显卡?
- 学校计算机机房维护年度总结,学校计算机机房的管理和维护建议原稿(全文完整版)...
- ConstraintLayout实现左中右布局
- dumprep.exe
- 关于北京工作居住证相关问题
- 网易公开课付费视频没有加密,可以随意下载到本地
- 九、奈氏准则和香农定理
- python输入一个整数和一个字符_【python零基础入门】基础语法之变量、字符串、数字、规则。...
- JVM 1.8 永久代---元空间 的变动