ML.NET Cookbook:(10)如何使用模型做出一个预测?

因为任何ML.NET模型都是一个转换器,所以您当然可以使用model.Transform将该模型应用于“数据视图”并以这种方式获得预测。

不过,更典型的情况是,没有我们想要预测的“数据集”,而是一次只接收一个样本。例如,我们将模型作为ASP.NET网站的一部分运行,并且需要对传入的HTTP请求进行预测。

对于这种情况,ML.NET提供了一个方便的PredictionEngine组件,它基本上是通过预测管道一次运行一个样本。

下面是完整的例子。假设我们为著名的Iris预测数据集建立了一个模型:

// 第一步:将数据加载为IDataView。// 检索训练数据。
var trainData = mlContext.Data.LoadFromTextFile<IrisInput>(irisDataPath,// 默认分隔符是tab,但数据集使用逗号。separatorChar: ','
);// 创建训练管道。
var pipeline =// 将所有特征串联到一列“Features”中。mlContext.Transforms.Concatenate("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth")// 请注意,标签是文本,因此需要将其转换为键。.Append(mlContext.Transforms.Categorical.MapValueToKey("Label"), TransformerScope.TrainTest)// 在缓存检查点阶段之后的步骤中,将数据缓存在内存中。.AppendCacheCheckpoint(mlContext)// 使用多类SDCA模型预测标签。.Append(mlContext.MulticlassClassification.Trainers.SdcaMaximumEntropy())// 应用从“PredictedLabel”列到字符串值的逆转换。.Append(mlContext.Transforms.Conversion.MapKeyToValue("Data", "PredictedLabel"));// 训练模型。
var model = pipeline.Fit(trainData);

现在,为了使用模式理解[1]进行预测,我们定义了一对类,如下所示:

private class IrisInput
{// 不幸的是,我们仍然需要虚拟的“Label”列。[ColumnName("Label")]public string IgnoredLabel { get; set; }public float SepalLength { get; set; }public float SepalWidth { get; set; }public float PetalLength { get; set; }public float PetalWidth { get; set; }
}private class IrisPrediction
{[ColumnName("Data")]public string PredictedClass { get; set; }
}

预测代码如下所示:

// 使用该模型进行一次性预测。
// 使预测函数成为对象。请注意,平均而言,此调用所花费的时间比一个预测长200倍左右,因此您可能希望缓存和重用预测函数,而不是为每个预测创建一个。
var predictionFunc = mlContext.Model.CreatePredictionEngine<IrisInput, IrisPrediction>(model);// 获得预测。 请记住,“预测”不是可重入的。 如果要使用多个线程进行同时预测,请确保每个线程都使用自己的PredictionEngine。
var prediction = predictionFunc.Predict(new IrisInput
{SepalLength = 4.1f,SepalWidth = 0.1f,PetalLength = 3.2f,PetalWidth = 1.4f
});

欢迎关注我的个人公众号”My IO“参考资料

[1]

模式理解: https://github.com/dotnet/machinelearning/blob/main/docs/code/SchemaComprehension.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

裤子换裙子,就问你GAN的这波操作秀不秀

全世界只有3.14 % 的人关注了数据与算法之美把照片里的绵羊换成长颈鹿、牛仔长裤换成短裙。听起来有点不可思议&#xff0c;但韩国科学技术院和浦项科技大学的研究人员目前已实现了这一骚操作。他们开发的一种机器学习算法可在多个图像数据集上实现这种操作。其论文《InstaGAN:…

python中字典长度可变吗_python中列表长度可变吗

python中列表长度可变吗&#xff1f;下面给大家介绍一下python中可变和不可变的类型&#xff1a;可变、不可变可变/不可变类型,指的是&#xff1a;内存id不变&#xff0c;type也不变的前提下&#xff0c;value是否是可变的。int()和str()都是不可变类型列表、字典是可变类型对于…

Windows UI风格的设计(11)

转载于:https://blog.51cto.com/8382359/1342271

教之初计算机考试函数应用题,教之初计算机考试系统

教之初计算机考试系统官方版是一款发布长达12年之久的免费考试系统软件&#xff0c;已经有数千万次使用的软件。教之初考试系统是专业的考试软件&#xff0c;您所考虑的功能&#xff0c;教之初都已经非常贴心地替您想好&#xff0c;如果您发现需要的功能并不存在&#xff0c;那…

这里聚集了优秀的数学老师、家长,有超多惊喜在等你!

全世界有3.14 % 的人已经关注了数据与算法之美今天的这篇文章&#xff0c;是向大家推荐一个数学公众号“少年数学家”。“少年数学家”是一个致力为数学老师与家长&#xff0c;提供丰富的数学课外知识、数学人物、数学趣谈、科技与数学的公众号&#xff0c;希望通过这些万物背后…

ASP.NET Core文件上传IFormFile于Request.Body的羁绊

前言在上篇文章深入探究ASP.NET Core读取Request.Body的正确方式[1]中我们探讨了很多人在日常开发中经常遇到的也是最基础的问题&#xff0c;那就是关于Request.Body的读取方式问题&#xff0c;看是简单实则很容易用不好。笔者也是非常荣幸的得到了许多同学的点赞支持&#xff…

librosa能量_语音MFCC提取:librosa amp;amp; python_speech_feature(2019.12)

最近在阅读语音方向的论文&#xff0c;其中有个被提及很多的语音信号特征MFCC(Mel-Frequency Cepstral Coefficients)&#xff0c;找到了基于python的语音库librosa(version0.7.1)和python_speech_features(version0.6)&#xff0c;下文对这两个库计算MFCC的流程细节稍作梳理。…

线性代数与矩阵论 习题 1.2.2

试利用辗转相除法&#xff0c;求有理系数多项式$u(x)$和$v(x)$,使得$u(x)f(x)v(x)g(x)(f(x),g(x))$. (1)$f(x)3x^3-2x^2x2$,$g(x)x^2-x1$. 解:\begin{align*} 3x^3-2x^2x2&3x(x^2-x1)(x^2-2x2)\\x^2-x1&(x^2-2x2)(x-1)\\x^2-2x2&x(x-1)-(x-2)\\x-1&x-21\\\end{…

Uno 平台 一 WinUI终极跨平台方案(一)

以下是 Uno 平台的官方介绍&#xff1a;关于 Uno 平台Uno平台能够创建像素级完美的&#xff0c;只通过C#XAML编写的应用程序&#xff0c;能够跨平台运行在Windows&#xff0c;iOS&#xff0c;安卓&#xff0c;macOS&#xff0c;Linux和Web上&#xff0c;Uno 平台是免费和开源的…

Python程序员的30个常见错误

全世界只有3.14 % 的人关注了数据与算法之美在这篇文章中&#xff0c;我将总结新老Python程序员常犯的一些错误&#xff0c;以帮助你们在自己的工作避免犯同样或类似错误。推荐阅读《Python3.0科学计算指南》首先我要说明一下的是&#xff0c;这些都是来源于第一手的经验。我以…

米兰大学计算机科学,米兰大学

很多去意大利留学的学生会选择去米兰大学留学&#xff0c;那么留学米兰大学需要了解哪些重要事项呢&#xff1f;跟着出国留学网来看看吧!欢迎阅读。意大利留学米兰大学解析院校基本信息欧洲排名7所在省州伦巴第大区所在城市Milano学校性质公立建校年代1923年学校人数60406人官方…

650c公路车推荐_2020最具性价比的中高端公路整车盘点

当你从小白成为进阶玩家后&#xff0c;发现陪伴自己多年公路车逐渐不能满足自己需求时&#xff0c;你渐渐将目光转向高端公路车&#xff0c;当你被“坑蒙拐骗”试骑了顶级公路车后&#xff0c;换车的想法在脑中油然而生。然而理想很丰满&#xff0c;现实很骨感。干瘪腰包把你从…

Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表...

在上一篇博客中&#xff0c;我们简单介绍了java读取word&#xff0c;excel和pdf文档内容 &#xff0c;但在实际开发中&#xff0c;我们用到最多的是把数据库中数据导出excel报表形式。不仅仅简单的读取office中的数据.尤其是在生产管理或者财务系统中用的非常普遍&#xff0c;因…

为什么 HTTP3.0 使用 UDP 协议?

还记得以前我提过的常见面试题么&#xff1a;从浏览器地址栏输入网址&#xff0c;到网页彻底打开&#xff0c;中间都发生了什么&#xff1f;从浏览器输入网址&#xff0c;到网页打开&#xff0c;发生了什么&#xff0c;这题有多经典&#xff0c;很多业内技术大牛说用过这题面试…

程序员为啥365天都背电脑包?这答案我服!

全世界只有3.14 % 的人关注了数据与算法之美最近微博上有个最新热门话题“关于报BUG&#xff08;漏洞&#xff09;的礼仪”不要跟程序员说程序有BUG他们第一反应是&#xff1a;你的环境有问题吧&#xff1f;接着就是&#xff1a;XXX你会用吗&#xff01;&#xff08;此处不可描…

html li 做瀑布流,js实现瀑布流效果(自动生成新的内容)

当滚动条接近底部会自动生成新的内容(色块)效果图&#xff1a;代码如下&#xff1a;Title*{list-style: none;}div{overflow: hidden;}ul{float: left;}li{width:300px; margin-bottom:10px;}function rnd(n,m){return parseInt(Math.random()*(m-n))n;}function cl(){var li …

六元均匀直线阵的各元间距为_实验二 均匀直线阵

实验二均匀直线阵一、实验目的&#xff1a;通过MATLAB编程&#xff0c;了解均匀直线阵的辐射特性&#xff0c;熟悉影响天线阵辐射的各种因素及其产生的影响。二、实验环境&#xff1a;MATLAB软件三、实验原理&#xff1a;单个天线的方向性是有限的&#xff0c;为了加强天线的定…

jquery实现多行滚动效果

2019独角兽企业重金招聘Python工程师标准>>> 有时jquery博客想&#xff0c;整那么多demo有什么用呢&#xff1f; 有些前端新手朋友不会&#xff0c;为他们服务吧。还有喜欢自己留点字迹&#xff0c;也好方便自己回过头看看。 温故而知新嘛。 前端需要那么多js特效&a…

.NET 搭建简单的通知服务

搭建简单的通知服务Intro很多情况下&#xff0c;我们都会遇到一些需要进行通知报警的场景&#xff0c;比如说服务器资源监控报警&#xff0c;抢到火车票后通知用户进行付款。原来主要是用的钉钉群里的机器人来做的通知&#xff0c;周末看到原来做 【Server 酱】的大佬写了一个简…

systrace html空白,Android性能优化之Systrace工具介绍(一) _ Systrace生成的trace.html打开空白或者打不开的解决办法...

1.必须用Chrome打开2.在mac电脑上&#xff0c;可能Chrome打开也是空白&#xff0c;解决办法是&#xff1a;在chrome地址栏中输入”chrome:tracing”&#xff0c;然后点击load按钮load你的trace.html文件。Systrace简单介绍Systrace是Android4.1中新增的性能数据采样和分析工具。…