分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

学习ML.NET(2): 使用模型进行预测

发布时间:2023-09-06 02:15责任编辑:顾先生关键词:.NET

训练模型

在上一篇文章中,我们已经通过LearningPipeline训练好了一个“鸢尾花瓣预测”模型,

var model = pipeline.Train<IrisData, IrisPrediction>();

现在就可以让模型对一条没有人工标注结果的数据进行分析,返回一个预测结果。

var prediction = model.Predict(new IrisData() ???????????{ ???????????????SepalLength = 3.3f, ???????????????SepalWidth = 1.6f, ???????????????PetalLength = 0.2f, ???????????????PetalWidth = 5.1f, ???????????}); Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}");

或者一次预测一批数据

var inputs = new[]{ ???????????????new IrisData() ???????????????{ ???????????????????SepalLength = 3.3f, ???????????????????SepalWidth = 1.6f, ???????????????????PetalLength = 0.2f, ???????????????????PetalWidth = 5.1f, ???????????????} ???????????????,new IrisData() ???????????????{ ???????????????????SepalLength = 5.2f, ???????????????????SepalWidth = 3.5f, ???????????????????PetalLength = 1.5f, ???????????????????PetalWidth = 0.2f, ???????????????} ???????????};var predictions = model.Predict(inputs);

保存模型

但是大多数时候,已经训练好的模型以后还需要继续可以使用,因此需要把它持久化,写入到zip文件中。

await model.WriteAsync("IrisPredictionModel.zip");

使用模型

一旦建立了机器学习模型,就可以部署它,利用它进行预测。我们可以通过REST API,接受来自客户端的数据输入,并返回预测结果。

  • 创建API项目

dotnet new webapi -o myApi
  • 安装依赖项

cd myApidotnet add package Microsoft.MLdotnet restore
  •  引用模型

要在API中引用我们前面保存的模型,只需将IrisPredictionModel.zip复制到API项目目录中即可。

  • 创建数据结构

我们的模型使用数据结构IrisData和IrisPrediction来定义特征和预测属性。因此,当使用我们的模型通过API进行预测时,它也需要引用这些数据结构。因此,我们需要在API项目中定义IrisData和IrisPrediction。类的内容与上一篇文章中创建模型项目中的内容相同。

using Microsoft.ML.Runtime.Api;namespace myApi{ ???public class IrisData ???{ ???????[Column("0")] ???????public float SepalLength; ???????[Column("1")] ???????public float SepalWidth; ???????[Column("2")] ???????public float PetalLength; ???????[Column("3")] ???????public float PetalWidth; ???????[Column("4")] ???????[ColumnName("Label")] ???????public string Label; ???}}
using Microsoft.ML.Runtime.Api;namespace myApi{ ???public class IrisPrediction ???{ ???????[ColumnName("PredictedLabel")] ???????public string PredictedLabels; ???}}
  • 创建Controller

现在,在API项目的Controllers目录中,创建PredictController类,用于处理来自客户端的预测请求,它包含一个POST方法

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using Microsoft.ML;namespace myApi.Controllers{ ???[Route("api/[controller]")] ???[ApiController] ???public class PredictController : ControllerBase ???{ ???????// POST api/predict ???????[HttpPost] ???????public async Task<string> Post([FromBody] IrisData value) ???????{ ???????????????????????var model = await PredictionModel.ReadAsync<IrisData,IrisPrediction>("IrisPredictionModel.zip"); ???????????var prediction = model.Predict(value); ???????????return prediction.PredictedLabels; ???????} ????}}
  • 测试API

使用如下命令行运行程序:

dotnet run

然后,使用POSTMAN或其他工具向http://localhost:5000/api/predict发送POST请求,请求数据类似:

{ ???"SepalLength": 3.3, ???"SepalWidth": 1.6, ???"PetalLength": 0.2, ???"PetalWidth": 5.1,}

如果成功,将会返回"Iris-virginica"。

学习ML.NET(2): 使用模型进行预测

原文地址:https://www.cnblogs.com/feiyun0112/p/ML-NET-2.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved