目录
介绍
背景
先决条件
使用代码
第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
(注意:我使用了Visual Studio 2019.)
安装必备组件后,单击开始 >> 程序 >> Visual Studio 2019 >> 桌面上的Visual Studio 2019 >>单击创建项目。点击继续。
选择“ASP.NET Core Web应用程序”,然后单击“下一步”。
选择项目文件夹,然后选中将解决方案放置在同一目录中并点击创建按钮。
现在选择Web应用程序(模型-视图-控制器),然后单击创建按钮。
我们可以看到我们的ASP.NET项目已经使用Controllers/Models和Views创建。
右键单击项目,然后选择添加,然后单击机器学习。
我们可以将其视为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,并向用户显示预测结果。
从菜单中选择工具,选择NuGet软件包管理器,然后单击管理解决方案的NuGet软件包。
选择浏览并在搜索中输入ML.NET并在右侧也选择Microsoft.ML,我们将看到将显示我们的ML.NET模型项目,选择该项目并点击安装。
右键单击Controller类,然后单击新的Empty控制器,并以StockPrediction命名控制器名称,然后将控制器添加到控制器文件夹中。
接下来,在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";
}
Welcome to Shanu Stock Prediction for the Item by Warehouse Location
using ML.NET in ASP.NET Core
Item ID
Warehouse Location Code:
@if (ViewBag.Result != null)
{
Here is the Test result for Item :
@ViewData["ItemID"]
for the Warehouse location @ViewData["Loccode"]
Final Predicted Stock Quantity is
:@ViewBag.Result.Prediction
}
生成并运行项目
我们可以输入要预测的物料代码和位置代码,并显示库存数量。
在这里,我们输入的项目代码为Item001和的位置代码为1。
我们可以看到预测结果为:90。
在Excel文件中,我们还可以交叉检查结果或原始数据。
与上述相同,我们测试了另外一个数据以进行预测,您可以看到结果。
在这里,我们输入的项目代码为Item003和的位置代码为2。
我们在文件中添加的Excel文件数据Item003如下:
从这两个结果中,我们可以发现预测已完成100%,并且结果符合预期。
兴趣点ML.NET(Machine Learning DotNet)是所有希望与机器学习一起工作的.NET爱好者的绝佳框架。现在只有ML.NET的预览版本可用,我迫不及待要发布ML.NET的公共版本。如果您是.NET爱好者,不了解机器学习并且不希望与机器学习一起工作,那么ML.Net是您的一切,且它是ML.NET入门的绝佳框架。