ML.Net 学习之使用经过训练的模型进行预测
什么是ML.Net:(学习文档上摘的一段:ML.NET 文档 - 教程和 API 参考 | Microsoft Learn 【学习入口】)
它使你能够在联机或脱机场景中将机器学习添加到 .NET 应用程序中。 借助此功能,可以使用应用程序的可用数据进行自动预测。 机器学习应用程序利用数据中的模式来进行预测,而不需要进行显式编程。
ML.NET 的核心是机器学习模型 。 该模型指定将输入数据转换为预测所需的步骤。 借助 ML.NET,可以通过指定算法来训练自定义模型,也可以导入预训练的 TensorFlow 和 ONNX 模型。
拥有模型后,可以将其添加到应用程序中进行预测。
说明:我已经用.cli工具生成好模型了,现在需要用训练模型生成预测数据。我需要用多线程的方式来预测,查看文档后大概有以下几种预测方式
(1)单一预测,使用PredictionEngine
//定义的输入数据的类
ModelInput inputData = new ModelInput()
{
Stock_cd = @"s_600803",
Stock_subject = @"油气开采;甲醇;蜱虫;天然气;并购重组;沪港通概念;油价上调;海藻炼油;融资融券;转融券标的",
Stock_block = @"994392,992046",
Stati_date = @"2013/1/14",
IsNewStock = @"否",
Stock_capital = 9857851F,
Price = 11.922F,
Volume = 14950900F,
Orders = -1043.7F,
Transaction = -3330F,
};
//Create MLContext
MLContext mlContext = new MLContext();
// Load Trained Model StockHolderPrediction.mlnet是已经训练好的模型
string filepath = Path.Combine(Environment.CurrentDirectory, "StockHolderPrediction.mlnet");
DataViewSchema predictionPipelineSchema;
ITransformer predictionPipeline = mlContext.Model.Load(filepath, out predictionPipelineSchema);
PredictionEngine<ModelInput, ModelOutput> predictionEngine = mlContext.Model.CreatePredictionEngine<ModelInput, ModelOutput>(predictionPipeline);
ModelOutput prediction = predictionEngine.Predict(inputData);
PredictionEngine 不是线程安全。 此外,必须在应用程序中的每一处所需位置创建它的实例。 随着应用程序的增长,此过程可能会变得难以管理。为了提高性能和线程安全,请结合使用依赖项注入和 PredictionEnginePool 服务
(2)单一预测,使用PredictionEnginePool
ModelInput inputData = new ModelInput()
{
Stock_cd = @"s_600803",
Stock_subject = @"油气开采;甲醇;蜱虫;天然气;并购重组;沪港通概念;油价上调;海藻炼油;融资融券;转融券标的",
Stock_block = @"994392,992046",
Stati_date = @"2013/1/14",
IsNewStock = @"否",
Stock_capital = 9857851F,
Price = 11.922F,
Volume = 14950900F,
Orders = -1043.7F,
Transaction = -3330F,
};
//Make Prediction
ModelOutput prediction = _predictionEnginePool.Predict(modelName: "StockHolderPrediction", example: inputData);
说明:上面这句之前我是这样写的:ModelOutput prediction = _predictionEnginePool.Predict(inputData);一直报错:You need to configure a default, not named, model before you use this method.

网上资料少,为了找这问题花好长时间
(3)多个预测,使用PredictionEnginePool
List<ModelInput> inputDataList = new List<ModelInput>();
inputDataList.Add(new ModelInput()
{
Stock_cd = @"s_600803",
Stock_subject = @"油气开采;甲醇;蜱虫;天然气;并购重组;沪港通概念;油价上调;海藻炼油;融资融券;转融券标的",
Stock_block = @"994392,992046",
Stati_date = @"2013/1/14",
IsNewStock = @"否",
Stock_capital = 9857851F,
Price = 11.922F,
Volume = 14950900F,
Orders = -1043.7F,
Transaction = -3330F,
});
IEnumerable<ModelOutput> predictions = inputDataList.Select(input => _predictionEnginePool.Predict(modelName: "StockHolderPrediction", example: input));
foreach (ModelOutput model in predictions)
{
}
可以用这个方法,预测一组(多个)。
(4)多个预测采用,IDataView
List<ModelInput> inputDataList = new List<ModelInput>();
inputDataList.Add(new ModelInput()
{
Stock_cd = @"s_600803",
Stock_subject = @"油气开采;甲醇;蜱虫;天然气;并购重组;沪港通概念;油价上调;海藻炼油;融资融券;转融券标的",
Stock_block = @"994392,992046",
Stati_date = @"2013/1/14",
IsNewStock = @"否",
Stock_capital = 9857851F,
Price = 11.922F,
Volume = 14950900F,
Orders = -1043.7F,
Transaction = -3330F,
});
//Create MLContext
MLContext mlContext = new MLContext();
// Load Trained Model
string filepath = Path.Combine(Environment.CurrentDirectory, "StockHolderPrediction.mlnet");
DataViewSchema predictionPipelineSchema;
ITransformer predictionPipeline = mlContext.Model.Load(filepath, out predictionPipelineSchema);
// Predicted Data
IDataView inputDataView = mlContext.Data.LoadFromEnumerable(inputDataList);
IDataView predictions = predictionPipeline.Transform(inputDataView);
// Get Predictions
float[] scoreColumn = predictions.GetColumn<float>("Score").ToArray();
经测试,这几种方式都能预测出结果,下一步,我需要比较哪一种方法用在多线程中比较好。
说明:我创建的是一个ASP.NET Core Web 应用(visual studio 2022)

需要注入PredictionEnginePool


说明:本文是经过学习摸索后写的总结性文章,难免遗漏。主要是备忘。不喜勿喷!
相关文章:
ML.Net 学习之使用经过训练的模型进行预测
什么是ML.Net:(学习文档上摘的一段:ML.NET 文档 - 教程和 API 参考 | Microsoft Learn 【学习入口】) 它使你能够在联机或脱机场景中将机器学习添加到 .NET 应用程序中。 借助此功能,可以使用应用程序的可用数据进行自…...
为什么 centos 下使用 tree 命令看不见 .env 文件
CentOS 下使用 tree 命令看不到 .env 文件主要有两个可能的原因: 默认情况下,tree 命令不显示隐藏文件。在 Linux 系统中,以点(.)开头的文件或目录被视为隐藏文件。.env 文件就属于这种隐藏文件。 您可能没有安装 tree 命令。如果在 CentOS …...
数据库基础与性能概述及相关术语
在计算机科学领域,特别是数据库技术中,掌握与数据库性能相关的专业词汇对于数据库管理员、开发人员及数据分析师等专业人员来说至关重要。以下是一篇关于计算机必背单词——数据库性能相关的详细解析. 一、数据库基础与性能概述 数据库是计算机科学中的…...
docker基于外部缓存加速构建方案
开启外部缓存 http://your_apt_cacher_ng_server:3142 是一个示例 URL,表示需要设置的 apt-cacher-ng 代理服务器的地址。apt-cacher-ng 是一个本地代理服务器,可以缓存从官方 APT 仓库下载的软件包,从而加速后续的下载过程,并减…...
【C语言】 作业11 链表+实现函数封装
递归实现链表数据互换,纯不会,明天再说 1、链表实现以下功能 链表,创建链表,申请节点,判空,头插,遍历输出,通过位置查找节点,任意位置插入,头删,…...
【Ubuntu】Ubuntu20修改MAC地址
文章目录 一、临时修改MAC地址(重启后复原)二、永久修改MAC地址 场景:在做虚拟机复制时,复制完的两台虚拟机存在相同MAC,导致无法分别分配IP。 解决:修改一台虚拟机的MAC地址。 一、临时修改MAC地址&#…...
ClickHouse集成LDAP实现简单的用户认证
1.这里我的ldap安装的是docker版的 docker安装的化就yum就好了 sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo systemctl start docker 使用下面的命令验证sudo docker run hello-world docker pull osixia/openl…...
C语言-预处理详解
1.预处理符号 C语言中设置了一些预定义符号,可以直接使用,预定义符号是在预处理期间处理的。 __FILE__//代表当前进行编译的源文件 __LINE__//文件当前行号 __DATE__//文件当前日期 __TIME__//文件当前时间 __STDC__//如果编译器遵循ANSIC,…...
计算机网络-VLAN间通信(三层通信)模拟实现
目录 VLAN基础知识VLAN和普通LAN区别划分VLAN的原因 实现VLAN间的通信(三层通信)方案一:多臂路由方案二:单臂路由方案三:三层交换机 VLAN基础知识 VLAN(Virtual Local Area Network,虚拟局域网…...
【JAVA】数据类型及变量
🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 Java的数据类型 可以分为两类,基本数据类型和引用数据类型 基本数据类型有4类8种,4类分别是整型 浮…...
微软蓝屏事件暴露的网络安全问题
目录 1.概述 2.软件更新流程中的风险管理和质量控制机制 2.1.测试流程 2.2.风险管理策略 2.3.质量控制措施 2.4.小结 3.预防类似大规模故障的最佳方案或应急响应对策 3.1. 设计冗余系统 3.2. 实施灾难恢复计划 3.3. 建立高可用架构 3.4. 类似规模的紧急故障下的响应…...
11 - FFmpeg - 编码 AAC
Planar 模式是 ffmpeg内部存储模式,我们实际使用的音频文件都是Packed模式的。 FFmpeq解码不同格式的音频输出的音频采样格式不是一样。 其中AAC解码输出的数据为浮点型的 AV_SAMPLE_FMT_FLTP 格式,MP3 解码输出的数据为 AV_SAMPLE_FMT_S16P 格式(使用的…...
OS Copilot初体验的感受与心得
本文介绍体验操作系统智能助手OS Copilot后,个人的一些收获、体验等。 最近,抽空体验了阿里云的操作系统智能助手OS Copilot,在这里记录一下心得与收获。总体观之,从个人角度来说,感觉这个OS Copilot确实抓住了不少开发…...
Ajax学习笔记
文章目录标题 Ajax学习笔记axios使用axios请求拦截器axios响应拦截器优化axios响应结果 form-serialize插件图片上传HTTP协议请求报文相应报文接口文档 AJAX原理 - XMLHttpRequest使用XMLHttpRequestXMLHttpRequest - 查询参数查询字符串对象 XMLHttpRequest - 数据提交 事件循…...
医学深度学习与机器学习融合的随想
医学深度学习与机器学习融合的随想 近年来,深度学习(图像类)和机器学习在医学领域的应用取得了飞速发展,为医学影像分析、疾病诊断和预后预测等领域带来了革命性的变革。深度学习擅长从复杂数据中提取高层次特征,而机…...
坑人的macos tar 命令 (实际上是bsdtar)换用 gnu tar
周末 看着笔记本上好用的朗文当代高级词典(mac版)和其它两部词典,准备复制到黑苹果台式机上去。考虑到词典内容有太多小文件,普通复制传输太慢,毫无疑问用 tar 打包肯定快而且能保留原始文件的各种信息。命令如下: time tar czf …...
【SpringBoot3】全局异常处理
【SpringBoot3】全局异常处理 一、全局异常处理器step1:创建收入数字的页面step2:创建控制器,计算两个整数相除step3:创建自定义异常处理器step5:创建给用提示的页面step6:测试输入(10/0) 二、BeanValidato…...
vue-Treeselect
一、Node KeyTypeDescriptionid (required)Number | String用于标识树中的选项。其值在所有选项中必须是唯一的label (required)String用于显示选项childrennode[] | null声明一个分支节点。你可以: 1) 设置为由a组成的子选项数组。叶节点,b…...
【机器学习框架TensorFlow和PyTorch】基本使用指南
机器学习框架TensorFlow和PyTorch:基本使用指南 目录 引言TensorFlow概述 TensorFlow简介TensorFlow的基本使用 PyTorch概述 PyTorch简介PyTorch的基本使用 TensorFlow和PyTorch的对比结论 引言 随着深度学习的快速发展,机器学习框架在实际应用中起到…...
matlab 中的methods(Access = protected) 是什么意思
gpt版本 在 MATLAB 中,methods 是用于定义类方法的一部分。(Access protected) 是一种访问控制修饰符,它限制了方法的访问权限。具体来说,当你在类定义中使用 methods(Access protected) 时,你是在定义只有类本身及其子类可以访…...
联想M920x黑苹果配置指南:从硬件适配到性能优化的完整方案
联想M920x黑苹果配置指南:从硬件适配到性能优化的完整方案 【免费下载链接】M920x-Hackintosh-EFI Hackintosh Opencore EFIs for M920x 项目地址: https://gitcode.com/gh_mirrors/m9/M920x-Hackintosh-EFI 联想M920x作为一款紧凑型商用主机,通过…...
Webots R2021a搭配Anaconda环境:从SSL报错到Python API调通的完整避坑指南
Webots R2021a与Anaconda环境深度整合:Python控制器开发全流程解析 当机器人仿真与Python开发环境相遇时,Webots和Anaconda的组合为研究者提供了强大工具链。然而,从环境配置到API调用的完整流程中,开发者常会遇到各种"坑点&…...
SDMatte多平台适配实践:Chrome/Firefox/Safari在Web抠图交互中的兼容性与性能表现
SDMatte多平台适配实践:Chrome/Firefox/Safari在Web抠图交互中的兼容性与性能表现 1. 引言 SDMatte是一款面向高质量图像抠图场景的AI模型,特别擅长处理主体分离、透明物体提取、边缘精修等任务。对于玻璃、薄纱、羽毛、叶片等边缘细节复杂或半透明目标…...
重新定义你的窗口管理体验 - StreamWindow 4.0
StreamWindow 4.0版本带来了重大更新,也做了很多优化和完善。 距离发布APP已经过去小半年了,这款macOS上的3D窗口管理工具随着4.0版本通过审核,带来大量的功能更新和完善,尤其引入了一种新的动画特效:扑克牌洗牌特效。…...
智能提取视频转文档:自动化工具提升内容处理效率
智能提取视频转文档:自动化工具提升内容处理效率 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 在数字化学习与办公场景中,视频内容提取已成为知识管理的重要…...
从ImageNet到CV落地:深度解读AlexNet的6个工程优化技巧
从AlexNet到现代CV工程:6个历久弥新的优化策略解析 当AlexNet在2012年ImageNet竞赛中以压倒性优势夺冠时,它带来的不仅是准确率的飞跃,更是一套影响深远的工程实践方法论。十年过去,尽管网络架构已迭代数十代,但AlexNe…...
基于STM32F103与HAL库的总线舵机多模式运动控制实战
1. STM32F103与HAL库开发环境搭建 第一次接触STM32F103和HAL库的朋友可能会觉得有点懵,其实搭建开发环境比你想象中简单多了。我当初用STM32CubeMX配置项目时踩过不少坑,现在把这些经验都分享给你。 首先得准备好硬件,你需要一块STM32F103开发…...
阿里云盘Refresh Token获取终极指南:3分钟搞定扫码授权全流程
阿里云盘Refresh Token获取终极指南:3分钟搞定扫码授权全流程 【免费下载链接】aliyundriver-refresh-token QR Code扫码获取阿里云盘refresh token For Web 项目地址: https://gitcode.com/gh_mirrors/al/aliyundriver-refresh-token 阿里云盘refresh token…...
新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码)
新手避坑指南:用MATLAB复现TI IWR1443雷达的距离与速度FFT处理(附完整代码) 第一次拿到IWR1443毫米波雷达开发板时,看着官方文档里密密麻麻的英文术语和零散的代码片段,我对着电脑屏幕发呆了整整半小时。作为电子工程专…...
NaViL-9B部署案例:中小企业用双24GB显卡替代A100实现降本增效
NaViL-9B部署案例:中小企业用双24GB显卡替代A100实现降本增效 1. 项目背景与价值 在AI大模型应用日益普及的今天,中小企业面临着高昂的硬件投入成本。传统部署方案通常需要A100等高端显卡,单卡价格动辄数万元,让许多企业望而却步…...
