注意:数据结构的一致性,在高维度数据一般使用rbf核函数,使用网格搜索思想迭代求出gamma和c。

每行为一个样本,数据类型都围绕标黄代码而定义的。

SVM训练如下坐标(左边一列为A类,右边为B类),然后预测给出的坐标属于哪一类。

#include<opencv2\opencv.hpp>
#include<iostream>
#include<opencv2\ml.hpp> //引入机器学习
using namespace cv;
using namespace std;
using namespace ml; int main()
{
//*1、类别标签labelsMat,因为其是短整型,所以labels定义成int类型。最后再转回char
int labels[] = { 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B', 'B' };
Mat labelsMat(, , CV_32S);//短整型
for (int i = ; i < labelsMat.rows; i++)
{
labelsMat.at<int>(i, ) = labels[i];
}
//*2、用于训练的样本集trainingDataMat
int trainingData[][] = { { , }, { , }, { , }, { , }, { , }, { , }, { , },
{ , }, { , }, { , }, { , }, { , }, { , }, { , } };
Mat trainingDataMat(, , CV_32F); //float类型
for (int i = ; i < trainingDataMat.rows; i++)
{
for (int j = ; j < trainingDataMat.cols; j++)
{
trainingDataMat.at<float>(i, j) = trainingData[i][j];
}
}
//*3、初始化SVM,参数参考 https://blog.csdn.net/qq_27278957/article/details/88736516
Ptr<ml::SVM> svm = ml::SVM::create();
svm->setType(SVM::C_SVC); //svm的类型,
svm->setKernel(SVM::LINEAR); //核函数
svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, , FLT_EPSILON)); //终止条件
//*4、训练模型
Ptr<TrainData> tData = TrainData::create(trainingDataMat, ROW_SAMPLE, labelsMat);//训练样本的数据类型必须是CV_32F,标签可以是CV_32S或其他。
svm->train(tData);
svm->save("svmData.xml");
//*5、预测
Mat tmp(, , CV_32F);
tmp.at<float>(, ) = ;
tmp.at<float>(, ) = ; char label = (char)svm->predict(tmp); //ASCII码转字符,预测结果为B
cout << label << endl; waitKey();
return ;
}

上图绘制代码:

Mat plot(, , CV_8U);
vector<Point> myPoint();//14个点
for (int i = ; i < myPoint.size(); i++)
{
myPoint[i].x = trainingData[i][];
myPoint[i].y = trainingData[i][];
circle(plot, myPoint[i], , Scalar(), -);
}
namedWindow("坐标点", );
imshow("坐标点", plot);

【参考】

https://blog.csdn.net/bigFatCat_Tom/article/details/95201903?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

SVM的使用的更多相关文章

  1. EasyPR--开发详解(6)SVM开发详解

    在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容.本文开始分析车牌定位模块后续步骤的车牌判断模块.车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机 ...

  2. 8.SVM用于多分类

    从前面SVM学习中可以看出来,SVM是一种典型的两类分类器.而现实中要解决的问题,往往是多类的问题.如何由两类分类器得到多类分类器,就是一个值得研究的问题. 以文本分类为例,现成的方法有很多,其中一劳 ...

  3. 5.SVM核函数

    核函数(Kernels) 定义 1.1 (核或正定核) 设是中的一个子集,称定义在上的函数是核函数,如果存在一个从到Hilbert空间的映射 使得对任意的,都成立.其中表示Hilbert空间中的内积. ...

  4. 4. SVM分类器求解(2)

    最优间隔分类器(optimal margin classifier) 重新回到SVM的优化问题: 我们将约束条件改写为: 从KKT条件得知只有函数间隔是1(离超平面最近的点)的线性约束式前面的系数,也 ...

  5. 2. SVM线性分类器

    在一个线性分类器中,可以看到SVM形成的思路,并接触很多SVM的核心概念.用一个二维空间里仅有两类样本的分类问题来举个小例子.如图所示 和是要区分的两个类别,在二维平面中它们的样本如上图所示.中间的直 ...

  6. 1. SVM简介

    从这一部分开始,将陆续介绍SVM的相关知识,主要是整理以前学习的一些笔记内容,梳理思路,形成一套SVM的学习体系. 支持向量机(Support Vector Machine)是Cortes和Vapni ...

  7. SVM分类与回归

    SVM(支撑向量机模型)是二(多)分类问题中经常使用的方法,思想比较简单,但是具体实现与求解细节对工程人员来说比较复杂,如需了解SVM的入门知识和中级进阶可点此下载.本文从应用的角度出发,使用Libs ...

  8. 【十大经典数据挖掘算法】SVM

    [十大经典数据挖掘算法]系列 C4.5 K-Means SVM Apriori EM PageRank AdaBoost kNN Naïve Bayes CART SVM(Support Vector ...

  9. 卷积神经网络提取特征并用于SVM

    模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...

  10. 机器学习实战笔记(Python实现)-05-支持向量机(SVM)

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

随机推荐

  1. 消息队列(二)--- RocketMQ-NameServer阅读

    概述   所有broker在启动的时候都会向NameServer进行注册,对它进行发送心跳包. 源码阅读 我们先从 NamesrvStartup这个类分析 public static void mai ...

  2. family_to_level函数

    #include <netinet/in.h> #include <sys/socket.h> int family_to_level(int family) { switch ...

  3. jmeter beanshell 使用参数引用

    1.直接使用beanshell 写代码引用: 2. beanshell  引用.java 文件 3.beanshell 引用jar 包

  4. python csv 数据切割定制jmeter数据

    需求压测随机抽取10w数据中自定义区间的指定数量数据进行压测: jmeter csv/txt配置: 需要获取{data: [${myList}]  }  jmeter需要数据类型 获取展读取csv数据 ...

  5. python之requests库使用

    requests库 虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 “HTTP for Human ...

  6. SpringBoot基于数据库的定时任务实现

    在我们平时开发的项目中,定时任务基本属于必不可少的功能,那大家都是怎么做的呢?但我知道的大多都是静态定时任务实现. 基于注解来创建定时任务非常简单,只需几行代码便可完成.实现如下: @Configur ...

  7. Java入门笔记 06-常用类

    介绍:本章将介绍Java的一些常用类,内容不完整,会在后续使用过程中逐步完善. 一. 字符串相关类: 1. String类介绍: |--- String类声明为final的,不能被继承: |--- 实 ...

  8. Python爬虫教程:requests模拟登陆github

    1. Cookie 介绍 HTTP 协议是无状态的.因此,若不借助其他手段,远程的服务器就无法知道以前和客户端做了哪些通信.Cookie 就是「其他手段」之一. Cookie 一个典型的应用场景,就是 ...

  9. pacman 包管理器相关设定

    pacman 包管理器相关设定 使用国内源 sudo pacman-mirrors -i -c China -m rank 设定 archlinuxcn 源 编辑/etc/pacman.conf,末尾 ...

  10. 杭电 1059 Dividing

    Dividing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...