目录

介绍

背景

先决条件

使用代码

第1步-创建ASP.NET Core应用程序

步骤2:使用ML.NET Model Builder

数据

训练

评估

代码

步骤3:将ML.NET添加到ASP.NET Core Project中以进行预测

步骤4:创建新的ASP.NET Core控制器

步骤5:创建新的ASP.NET Core视图

控制器代码

视图代码

生成并运行项目

兴趣点


在本文中,我们研究了ML.NET的基本概念,该基本概念需要用于开发机器学习应用程序。使用ML.NET模型构建器,可以轻松地从CSV,Excel或数据库中加载数据,选择并训练我们首选的可用ML.NET模型,或者进行自定义模型训练,评估模型并最终预测并显示训练有素的模型结果应用于我们的任何.NET应用程序。现在,在本文中,我们将看看将在ASP.NET Core应用程序中显示的经过训练和预测的结果。

  • 下载源代码2.7 MB

介绍

在本文中,我们将详细介绍如何使用ML.NET Model Builder创建ML.NET应用程序以及如何使用经过训练的模型来预测ASP.NET Core中的结果。

ML.NET模型构建器使我们更轻松地开发ML.NET应用程序,从而更轻松地构建,训练和部署各种ML .NET支持模型的模型,也使我们能够更轻松地开发定制模型。如果您不熟悉ML.NET,请阅读我以前与ML.NET相关的文章。最新版本的ML.NET也使用AutoML和ML.NET模型构建器来开发简单的自定义ML。

在开始使用ML.NET之前,让我们了解ML.NET的基本概念,该基本概念需要用于开发我们的机器学习应用程序。

加载数据:为了完美预测结果,我们需要提供大量数据来训练模型。在ML.Net中,我们可以通过文本(CSV/TSV,关系数据库)提供训练和测试的数据。

训练:我们需要选择正确的算法来训练模型。根据我们的需求,我们必须选择正确的算法来训练和预测结果。

评估:为模型训练和预测选择机器学习类型。如果需要使用细分,则可以选择Clustering模型。如果需要找到股票预测的价格,则可以选择Regression,如果需要找到情绪分析,则可以选择Regressio模型。

预测结果:基于训练模型的训练和测试数据,将使用ML.NET应用程序显示最终预测。经过训练的模型将被保存为二进制格式,也可以与我们的其他.NET应用程序集成。

现在使用ML.NET模型构建器,可以轻松地从CSV,Excel或数据库中加载数据,选择并训练我们首选的可用ML.NET模型,或者进行自定义模型训练。评估模型,最后预测并向我们的任何.NET应用程序显示经过训练的模型结果。现在,在本文中,我们来看看将在ASP.NET Core应用程序中显示的经过训练和预测的结果。

在ML.NET模式构建器中,我们可以看到以下场景(注意:Microsoft可以添加更多场景,因为它可能与每个版本不同。)

在此示例程序中,我们将使用ML.NET模型构建器使用自定义方案来预测物料库存。

在我于2018年4月写的上一篇文章中,我使用控制台应用程序解释了相同的项目库存预测,我使用了与CSV文件相同的项目库存数据,并使用这些数据来训练模型和预测结果并最终绑定结果返回到ASP.NET Core应用程序。

物料库存数据将看起来像这样,在这里,我有以下列:物料代码、位置代码、仓库中的数量、仓库出库数量、物料类型,最后是每个位置中每个物料的剩余物料的总库存量。我们将使用ML.NET模型构建器使用以下数据集来训练,评估和预测结果。

背景

先决条件

  • Visual Studio 2017 15.9.12或更高版本
  • ML.NET Model Builder

使用代码

第1步-创建ASP.NET Core应用程序

注意:我使用了Visual Studio 2019.)

安装必备组件后,单击开始 >> 程序 >> Visual Studio 2019 >> 桌面上的Visual Studio 2019 >>单击创建项目。点击继续

选择“ASP.NET Core Web应用程序,然后单击“下一步

选择项目文件夹,然后选中将解决方案放置在同一目录中并点击创建按钮。

现在选择Web应用程序(模型-视图-控制器),然后单击创建按钮。

我们可以看到我们的ASP.NET项目已经使用Controllers/Models和Views创建。

步骤2:使用ML.NET Model Builder

右键单击项目,然后选择添加,然后单击机器学习

我们可以将其视为ML.NET模型构建器。

在ML.NET Model Builder的左侧,我们可以看到诸如“方案”,“数据”,“训练”,“评估”和“代码”之类的菜单。

方案:从方案中,您可以看到开发示例的可用ML.NET模型,例如二进制分类,图像分类等。此外,您还可以看到自定义方案,以构建我们自己的自定义模型。在我们的演示中,我们将使用自定义模型。

数据:您可以从文件或数据库中加载数据进行训练。

训练:选择要训练的模型

评估:将在模型训练完成后进行评估。在评估中,将经过训练的模型与测试数据进行比较,以比较和预测要产生的最终结果。

代码:最后,该代码将用于为受过训练的模型创建代码并将其用于我们的任何应用程序中,我们将对ASP.NET Core应用程序使用最终的训练和评估的模型代码来预测和显示每个位置可用的项目总库存数量的结果。

自定义方案:在这里,我们选择了演示应用程序的自定义方案,以预测库存数量。

数据

选择方案后,我们将看到显示下一个菜单,因为这里我们选择了自定义方案,然后显示了数据菜单,从这里,我们可以选择从文件中加载要训练的数据或从数据库中。在这里,我们将使用文件加载数据。

单击选择文件并加载文件。我们已经在这里加载了要训练的文件,因此可以在此处看到。

接下来,我们需要选择要预测的列(在Machine Learning中,预测列称为Label)。在我们的演示中,我们将预测TotalStockQty。同样,我们需要选择我们给定的“输入”列以预测结果。这里是我们的演示,我们需要根据Item和Location来预测库存数量。因此,在这里,我们选择了输入列(特性)列作为ItemID和Loccode。

训练

之后,单击训练按钮以使用加载的数据训练模型。
在训练屏幕中,我们可以看到要选择的机器学习任务以训练模型,也可以看到训练模型的时间(以秒为单位)。

机器学习任务:对于自定义场景,我们可以看到ML.NET可用的任务是多类分类,二进制分类和回归。在我们的演示中,我们选择了多类分类。

在这里,我们的文件大小非常小,数据大小最大为10MB,我们可以选择大约10秒来训练模型。

在选择机器学习任务和训练时间后,单击开始训练按钮,然后等待几秒钟以完成训练。

现在我们可以看到训练已经完成,并且使用了最佳算法,接下来,我们需要单击“评估按钮来评估我们的训练模型。

评估

在评估屏幕中,我们可以评估经过训练的模型,最后单击代码按钮以获取代码。

代码

我们可以将ML.NET模型、训练和测试项目添加到我们的解决方案中。我们会将这个模型添加到我们的ASP.NET Code项目解决方案中。为此,我们需要单击“添加到项目按钮。

我们可以看到,模型和控制台项目都已添加到我们的ASP.NET Core解决方案中。现在,让我们看看如何将模型导入到我们的ASP.NET Core,并向用户显示预测结果。

步骤3:将ML.NET添加到ASP.NET Core Project中以进行预测

从菜单中选择工具,选择NuGet软件包管理器,然后单击管理解决方案的NuGet软件包

选择浏览并在搜索中输入ML.NET并在右侧也选择Microsoft.ML,我们将看到将显示我们的ML.NET模型项目,选择该项目并点击安装

步骤4:创建新的ASP.NET Core控制器

右键单击Controller类,然后单击新的Empty控制器,并以StockPrediction命名控制器名称,然后将控制器添加到控制器文件夹中。

步骤5:创建新的ASP.NET Core视图

接下来,在View文件夹内创建一个名为StockPrediction的新文件夹, 并添加一个名为StockPrediction.cshtml的视图。

控制器代码

在StockPredictionController控制器中,添加以下代码:

using ShanuASPMLNETML.Model;

导入后,添加以下代码。在这里,我们使用新的View名称更改默认视图,还创建了一个post操作(action)结果,并将预测结果返回到该视图以绑定结果。

public class StockPredictionController : Controller{[HttpGet]public IActionResult StockPrediction(){return View();}[HttpPost]public ActionResult StockPrediction(ModelInput input){ViewBag.Result = "";var stockPredictions = ConsumeModel.Predict(input);ViewBag.Result = stockPredictions;ViewData["ItemID"] = input.ItemID;ViewData["Loccode"] = input.Loccode;return View();}}

视图代码

在StockPrediction视图中,添加以下代码。在这里,增加了2个textbox,一个作为项目代码输入,,一个用于位置代码输入和我们有相同的名称设置为我们的模型名称,数据将被传递给我们的训练模型和回归预测结果,最后我们将预测结果绑定到用户。

@model ShanuASPMLNETML.Model.ModelInput
@{ViewData["Title"] = "item Stock Predicti0n";Layout = "~/Views/Shared/_Layout.cshtml";
}<h2>Welcome to Shanu Stock Prediction for the Item by Warehouse Location</h2>
<h3>using ML.NET in ASP.NET Core</h3>
<hr /><div class="row"><div class="col-md-12"><form asp-action="StockPrediction"><div class="row"><div class="form-group col-md-4"><label asp-for="ItemID" class="control-label">Item ID</label><input asp-for="ItemID" class="form-control" /></div><div class="form-group col-md-4"><label asp-for="Loccode" class="control-label">Warehouse Location Code:</label><input asp-for="Loccode" class="form-control" /></div></div><div class="form-group col-md-4 text-left"><label class="control-label"></label><input type="submit" value="Stock Prediction" class="btn btn-primary" /></div></form><hr /></div></div>@if (ViewBag.Result != null)
{<div class="row"><div class="col-md-12"><h2 style="color:#103f62">Here is the Test result for Item : <span style="color:#a50f0f"> @ViewData["ItemID"]  </span> for the Warehouse location <span style="color:#a50f0f">@ViewData["Loccode"] </span>  </h2><h1 style="color:#a50f0f">Final Predicted Stock Quantity is :@ViewBag.Result.Prediction  </h1></div></div><hr />
}

生成并运行项目

我们可以输入要预测的物料代码和位置代码,并显示库存数量

在这里,我们输入的项目代码为Item001和的位置代码为1。

我们可以看到预测结果为:90。

在Excel文件中,我们还可以交叉检查结果或原始数据。

与上述相同,我们测试了另外一个数据以进行预测,您可以看到结果。

在这里,我们输入的项目代码为Item003和的位置代码为2。

我们在文件中添加的Excel文件数据Item003如下:

从这两个结果中,我们可以发现预测已完成100%,并且结果符合预期。

兴趣点

ML.NET(Machine Learning DotNet)是所有希望与机器学习一起工作的.NET爱好者的绝佳框架。现在只有ML.NET的预览版本可用,我迫不及待要发布ML.NET的公共版本。如果您是.NET爱好者,不了解机器学习并且不希望与机器学习一起工作,那么ML.Net是您的一切,且它是ML.NET入门的绝佳框架。

在ASP.NET Core中使用的ML.NET模型构建器入门相关推荐

  1. ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)

    本博文翻译自: https://dotnetcoretutorials.com/2017/10/25/owasp-top-10-asp-net-core-cross-site-scripting-xs ...

  2. 如何使用C#在ASP.NET Core中轻松实现QRCoder

    by Yogi 由瑜伽士 如何使用C#在ASP.NET Core中轻松实现QRCoder (How to easily implement QRCoder in ASP.NET Core using ...

  3. asp.net core中IHttpContextAccessor和HttpContextAccessor的妙用

    分享一篇文章,关于asp.net core中httpcontext的拓展. 现在,试图围绕HttpContext.Current构建你的代码真的不是一个好主意,但是我想如果你正在迁移一个企业类型的应用 ...

  4. 在asp.net core中使用托管服务实现后台任务

    在业务场景中经常需要后台服务不停的或定时处理一些任务,这些任务是不需要及时响应请求的. 在 asp.net中会使用windows服务来处理. 在 asp.net core中,可以使用托管服务来实现,托 ...

  5. ASP.NET Core中显示自定义错误页面-增强版

    之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...

  6. 探索ASP.NET Core中的IStartupFilter

    原文:Exploring IStartupFilter in ASP.NET Core 作者:Andrew Lock 译者:Lamond Lu 在本篇博客中,我将介绍一下IStartupFilter, ...

  7. 如何简单的在 ASP.NET Core 中集成 JWT 认证?

    前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...

  8. 在 ASP.NET Core 中集成 Skywalking APM

    前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...

  9. .ASP NET Core中缓存问题案例

    本篇博客中,我将描述一个关于会话状态(Session State)的问题, 这个问题我已经被询问了好几次了. 问题的场景 创建一个新的ASP.NET Core应用程序 一个用户在会话状态中设置了一个字 ...

最新文章

  1. 电子表单系列谈之表单数据处理
  2. C++前插法实现链表
  3. php ftp 分块下载,php ftp下载文件
  4. endnotex7怎么导入中文文献_EndNote X7自动导入PDF功能详解 | 科研动力
  5. LeetCode 110. 平衡二叉树(Balanced Binary Tree) 15
  6. C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中
  7. C语言中的变量是怎么回事?
  8. Android MVP
  9. java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo
  10. android 软件测试文档,Android软件测试文档规范【参考】.doc
  11. 退出命令_利好消息!上级命令:乡村医生满60岁要办退出手续
  12. 从零开始学Android(一)
  13. 记一次rm -rf之后的数据恢复操作
  14. YUY2和MJPG视频编码格式区别
  15. 基于聚类分析和因子分析的空气质量研究
  16. 计算机论文外文翻译,计算机专业毕业论文外文翻译2篇
  17. m在ISE平台下使用verilog开发基于FPGA的GMSK调制器
  18. 6.4 深度负反馈放大电路放大倍数的分析
  19. 如何实现JAVA游戏存档_保存游戏数据 – Java
  20. element做树形下拉_点睛时刻:移动端需要做SEO优化吗?移动端该怎么做SEO优化?

热门文章

  1. python自己创建模块引用失败_详解Python import方法引入模块的实例 Python怎么import自己写的模块...
  2. 宁夏师范大学本科计算机理工,2019年宁夏师范学院区内二批普通本科理工类(录取905人,共16个专业)...
  3. strcpy用于调用的参数太少_JVM:虚拟机方法调用(理解重载和重写的本质)
  4. linux某个目录下特定文件名,用脚本实现移动某目录下文件名符合指定规则的文件到另一个目录的功能...
  5. 使用动态优先权的进程调度算法的模拟_我爱OS第12讲:系统调度
  6. UI完美配色专辑|色彩是影响设计使用者情绪和行为行为的最重要因素之一
  7. Linux内存管理:ARM64体系结构与编程之cache(3):cache一致性协议(MESI、MOESI)、cache伪共享
  8. 利用scp在windows和linux之间进行文件和文件夹的数据拷贝
  9. 零基础学java web开发 pdf_从零开始学Java Web开发 PDF 扫描版[69M]
  10. python画平面直角坐标系_Python 数据可视化:重新认识坐标系