OpenCV机器学习(10)训练数据的一个核心类cv::ml::TrainData
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
cv::ml::TrainData 类是 OpenCV 机器学习模块中用于表示训练数据的一个核心类。它封装了样本数据、响应(标签)、样本权重等信息,并提供了多种方法来创建和操作这些数据,以适应不同的机器学习算法需求。
主要功能
- 数据准备:允许你从原始数据创建训练数据对象。
- 支持多种任务:无论是分类、回归还是其他类型的任务,都可以使用 TrainData 来组织你的数据。
- 灵活的数据输入:支持直接从矩阵输入数据,也支持加载来自文件的数据。
- 数据分割:可以将数据集分割为训练集和测试集。
常用成员函数
- 创建 TrainData 对象
static Ptr create(InputArray samples, int layout, InputArray responses, InputArray varIdx=noArray(), InputArray sampleIdx=noArray(), InputArray sampleWeights=noArray(), InputArray varType=noArray()):
从给定的样本、响应和其他可选参数创建一个 TrainData 对象。- samples:样本数据矩阵,每一行代表一个样本。
- layout:样本布局,可以是 ROW_SAMPLE 或 COL_SAMPLE,表示每个样本是按行还是按列存储。
- responses:每个样本对应的响应向量或矩阵。
- 获取数据信息
- int getNTrainSamples() const:获取训练样本的数量。
- int getNVars() const:获取变量(特征)的数量。
- Mat getSamples() const:返回所有样本。
- Mat getResponses() const:返回所有响应。
- Mat getSampleWeights() const:返回样本权重。
- Mat getTrainSampleWeights() const:返回训练集的样本权重。
- 数据分割
- void setTrainTestSplit(int count, bool shuffle=true):根据指定的训练样本数量将数据集划分为训练集和测试集。
- void setTrainTestSplitRatio(double ratio, bool shuffle=true):根据比例将数据集划分为训练集和测试集。
- Mat getTrainSamples() const:返回训练集的样本。
- Mat getTrainResponses() const:返回训练集的响应。
- Mat getTestSamples() const:返回测试集的样本。
- Mat getTestResponses() const:返回测试集的响应。
代码示例
#include <iostream>
#include <opencv2/ml.hpp>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace cv::ml;
using namespace std;int main()
{// 准备训练数据Mat samples = ( Mat_< float >( 4, 2 ) << 0.5, 1.0, 1.0, 1.5, 2.0, 0.5, 1.5, 0.0 );Mat responses = ( Mat_< int >( 4, 1 ) << 0, 0, 1, 1 );// 使用TrainData创建训练数据对象Ptr< TrainData > trainData = TrainData::create( samples, ROW_SAMPLE, responses );// 打印样本数量和变量数量cout << "Number of training samples: " << trainData->getNTrainSamples() << endl;cout << "Number of variables: " << trainData->getNVars() << endl;// 分割数据集为训练集和测试集trainData->setTrainTestSplitRatio( 0.75, true ); // 按75%比例分割,shuffle=true表示随机打乱// 获取训练样本和响应Mat trainSamples = trainData->getTrainSamples();Mat trainResponses = trainData->getTrainResponses();// 获取测试样本和响应Mat testSamples = trainData->getTestSamples();Mat testResponses = trainData->getTestResponses();// 训练一个简单的SVM模型作为示例Ptr< SVM > svm_model = SVM::create();svm_model->setType( SVM::C_SVC );svm_model->setKernel( SVM::RBF );svm_model->setC( 1 );svm_model->setGamma( 0.5 );bool ok = svm_model->train( trainData );if ( ok ){// 对测试集中的样本进行预测float response = svm_model->predict( testSamples );cout << "The predicted response for the test sample is: " << response << endl;}else{cerr << "Training failed!" << endl;}return 0;
}
运行结果
Number of training samples: 4
Number of variables: 2
The predicted response for the test sample is: 1
相关文章:
OpenCV机器学习(10)训练数据的一个核心类cv::ml::TrainData
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::TrainData 类是 OpenCV 机器学习模块中用于表示训练数据的一个核心类。它封装了样本数据、响应(标签)、样本权重…...
3.1 actor基本框架(c#的Akka.Actor模式)
1.最简单的一个框架 代码如下(代码容易理解): using System; using Akka.Actor; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography.X509Certi…...
Git使用[同一电脑多个账户ssh-key的管理]
同一电脑多个账户ssh-key的管理 现在遇到一个问题,我同一台电脑既要通过VPN访问内网的git也要访问对外释放的gitee,刚开始我直接把原来的SSH-key添加到内网的gitlab发现可以访问,但是后来再方位外网的gitee就出问题了,看来要换一种手段才行 本文引用:https://cloud…...
使用Python结合`stable-baselines3`库(包含PPO和TD3算法)以及`gym`库来实现分层强化学习的示例代码
以下是一个使用Python结合stable-baselines3库(包含PPO和TD3算法)以及gym库来实现分层强化学习的示例代码。该代码将环境中的动作元组分别提供给高层处理器PPO和低层处理器TD3进行训练,并实现单独训练和共同训练的功能。 代码实现 import g…...
【论文笔记】MambaGlue: Fast and Robust Local Feature Matching With Mamba
【引用格式】:Ryoo K, Lim H, Myung H. MambaGlue: Fast and Robust Local Feature Matching With Mamba[J]. arXiv preprint arXiv:2502.00462, 2025. 【网址】:https://arxiv.org/pdf/2502.00462 【开源代码】:https://github.com/uri-Ka…...
基于 Stanford CoreNLP 的中文自然语言处理
一、概述 Stanford CoreNLP 是斯坦福大学开发的一款强大的自然语言处理(NLP)工具,支持多种语言的文本处理,包括中文。本文将详细介绍如何使用 Stanford CoreNLP 实现中文文本的分词、词性标注、命名实体识别、句法分析等功能&…...
python 量化交易入门到提升详细教程,python量化交易教程
文章目录 前言入门阶段1. 环境准备安装 Python选择开发环境安装必要的库 2. 金融数据获取3. 简单策略构建 - 移动平均线交叉策略 进阶阶段1. 策略回测2. 风险管理3. 多因子策略4. 机器学习在量化交易中的应用5. 高频交易策略 前言 Python 作为一门功能强大、易于学习且应用广泛…...
如何设置爬虫的访问频率?
设置爬虫的访问频率(即请求间隔)是确保爬虫稳定运行并避免对目标服务器造成过大压力的关键步骤。合理的访问频率不仅可以减少被目标网站封禁IP的风险,还能提高爬虫的效率。以下是一些设置爬虫访问频率的方法和最佳实践: 1. 使用s…...
前端循环全解析:JS/ES/TS 循环写法与实战示例
循环是编程中控制流程的核心工具。本文将详细介绍 JavaScript、ES6 及 TypeScript 中各种循环的写法、特性,并通过实际示例帮助你掌握它们的正确使用姿势。 目录 传统三剑客 for 循环 while 循环 do...while 循环 ES6 新特性 forEach for...of for...in 数组…...
大气体育直播模板赛事扁平自适应模板源码
源码名称:大气体育直播模板赛事网站源码 开发环境:帝国cms 7.5 安装环境:phpmysql 模板特点: 程序伪静态版本,实时采集更新,无人值守,省心省力。带火车头采集,可以挂着自动采集发布…...
vue3学习1
vite是新的官方构建工具,构建速度比webpack更快 vue项目的入口文件是index.html,一般在这里引入src/main.js,并且设置好容器#app App.vue放的是根组件,components里放分支组件 vue组件中写三种标签,template & s…...
java机器学习计算指标动态阈值
java机器学习计算指标动态阈值 最近听到有的人说要做机器学习就一定要学Python,我想他们掌握的知道还不够系统全面。本文作者以动态阈值需求场景给大家介绍几种常用Java实现的机器学习库,包括使用开源库如Weka或Deeplearning4j(DL4J…...
mac os设置jdk版本
打开环境变量配置文件 sudo vim ~/.bash_profile 设置不同的jdk版本路径 # 设置JAVA_HOME为jdk17路径 export JAVA_HOME$(/usr/libexec/java_home -v 17)# 设置JAVA_HOME为jdk8路径 export JAVA_HOME$(/usr/libexec/java_home -v 1.8) 设置环境变量 # 将jdk加入到环境变量…...
Python正则表达式学习
Python正则表达式全攻略 一、正则表达式基础 1. 什么是正则表达式? 用于描述字符串匹配规则的表达式广泛应用于文本处理、表单验证、数据清洗等领域 2. Python中的re模块 import re3. 基础语法 字符说明示例.匹配任意字符(除换行)a.c → abc\d数字 [0-9]\d\d …...
ShenNiusModularity项目源码学习(10:ShenNius.FileManagement项目分析)
ShenNiusModularity项目支持七牛云和本地图片存储,其文件上传接口及实现就位于ShenNius.FileManagement项目内,该项目内文件不多,主要就是围绕上传本地及七牛云的实现及相关类定义。 扩展类FileManagemenServiceExtensions的AddFileUploa…...
mysql查看binlog日志
mysql 配置、查看binlog日志: 示例为MySQL8.0 1、 检查binlog开启状态 SHOW VARIABLES LIKE ‘log_bin’; 如果未开启,修改配置my.ini 开启日志 安装目录配置my.ini(mysql8在data目录) log-binmysql-bin(开启日志并指定日志前缀ÿ…...
Node.js高频面试题精选及参考答案
目录 什么是 Node.js?它的主要特点有哪些? Node.js 的事件驱动和非阻塞 I/O 模型是如何工作的? 为什么 Node.js 适合处理高并发场景? Node.js 与传统后端语言(如 Java、Python)相比,有哪些优势和劣势? 简述 Node.js 的运行原理,包括 V8 引擎的作用。 什么是 Nod…...
TaskBuilder创建客户信息列表页面
3.4.1选择页面类型 点击上面创建的customer文件夹右侧的加号,打开“前端资源创建向导”对话框,选中“数据查询TFP”,资源名称会自动设置为index,这里我们不用改。 点“下一步”按钮,会弹出下图所示的“创建数据查询T…...
Linux Iptables示例一则
个人博客地址:Linux Iptables示例一则 | 一张假钞的真实世界 关于Iptables的介绍个人强烈推荐:iptables-朱双印博客-第2页。这位兄弟介绍的很详细。 我个人的需求是在同一个网络内从网络上把测试主机与正式环境主机间的网络进行隔离。我的思路是采用OU…...
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
视频教程和更多福利在我主页简介或专栏里 (不懂都可以来问我 专栏找我哦) 如果对你有帮助你可以来专栏找我,我可以无偿分享给你对你更有帮助的一些经验和资料哦 目录: 一、XSS的三种类型: 二、XSS攻击的危害&#x…...
你的运放电路为啥会自己‘唱歌’?聊聊负反馈自激振荡那些事儿
运放电路为何会自激振荡?从啸叫现象到稳定设计的实战指南 现象篇:当电路开始"唱歌" 调试台上传来刺耳的高频啸叫声——这是许多硬件工程师都经历过的"惊悚时刻"。上周五深夜,当我正在测试一款多级运放构成的麦克风前置放…...
《好写作AI:带你轻松解锁期刊论文的“学术翻译”密码,审稿人一眼就懂!》
“我的实验数据明明很漂亮,创新点也够,怎么每次都被审稿人说‘表达不清晰、逻辑欠连贯’?” 这是我在后台收到频率最高的私信之一,几乎每周都要回答好几次。问题到底出在哪?我想说的是——很多时候,问题不…...
飞书网页应用开发避坑指南:从500错误到成功部署,我踩过的那些坑(Flask环境配置篇)
飞书网页应用开发避坑指南:Flask环境配置的深度排错手册 第一次在飞书开放平台尝试Python网页应用开发时,我盯着命令行里不断刷新的500错误日志,感觉就像在解一道没有提示的谜题。作为从传统Web开发转向企业级应用集成的开发者,飞…...
免费开源AMD Ryzen处理器深度调试工具:终极指南
免费开源AMD Ryzen处理器深度调试工具:终极指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gitcode.…...
Alternative Frontends完整清单:从YouTube到Reddit的30+个无追踪前端
Alternative Frontends完整清单:从YouTube到Reddit的30个无追踪前端 【免费下载链接】alternative-frontends 🔐🌐 Privacy-respecting web frontends for popular services 项目地址: https://gitcode.com/gh_mirrors/al/alternative-fro…...
交通系统安全审计:90%的漏洞源于日志记录失误,你中招了吗?
🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不…...
2026年lpa分层审核系统排行榜:哪款lpa分层审核软件最适合你的工厂?
在2026年的制造业数字化转型浪潮中,lpa分层审核系统(Layered Process Audit System)已成为工厂质量管理的核心工具。随着企业对生产过程稳定性要求的提升,寻找一款最适合你的工厂的lpa分层审核软件变得至关重要。根据最新的行业数…...
1985-2025.12最新亿量级裁判文书全量数据
中国裁判文书网是依托最高人民法院政务网站建立的二级网站,栏目包括刑事案件、民事案件、行政案件、赔偿案件、执行案件和知识产权,具备一定的分类和检索功能,另外还设置了专门用于收集社会各界意见的邮箱。网站公布的生效裁判文书࿰…...
LangGraph 并发控制:如何防止多 Agent 同时操作资源导致的数据竞争
一、 引言 (Introduction) 钩子 (The Hook): 从ChatGPT的“分身乏术”到企业级多Agent的“致命混乱” 你有没有试过让ChatGPT帮你同时整理3份季度财报,同步核对5个不同来源的竞品价格,还要实时生成一封给投资人的更新邮件——然后看着它一会儿漏记了第三…...
技术引领,专家赋能——大连欣科中空板生产线铸就全球竞争力
在全球塑料挤出装备领域,大连欣科机器有限公司凭借二十余年的专注深耕,已成为中空板生产线市场占有率第一的行业标杆。公司以技术为核心驱动力,依托强大的自主研发实力和开放的专家合作生态,持续为客户提供高效、智能的装备解决方…...
