系列ML.Net 学习篇【一】——初识机器学习

news2024/11/25 10:36:51

由于公司项目涉及到机器学习和图像识别,虽然我并不是算法专家,但毕竟需要了解和知道其运转原理,因此自我进行了学习进化,决定在机器学习上有所进展,结合.NET技术的ML.NET,把机器学习的技能提升一个Level,如果你也有兴趣学习机器学习,并且恰好也是熟悉.NET技术栈,那么就和我一块学习吧… r u ready?

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
  • 📢本文作者:由webmote 原创
  • 📢作者格言:无尽的折腾后,终于又回到了起点,工控,我来了 !

1.ML.NET 介绍

在这里插入图片描述
.NET 引入ML.NET,非常简单,只需要安装包即可。

<PackageReference Include="Microsoft.ML" Version="2.0.0" />

微软官方的目的就是,让你无需离开 .NET 生态系统,便可以使用 C# 或 F# 创建自定义 ML 模型。并让你可以轻松地将机器学习集成到 Web、移动、桌面、游戏和物联网应用中。

所以如果你刚好有Python训练好的模型,而正在烦恼怎么应用到.NET平台上时,那么刚好可以使用ML.NET,使用你的模型,它基本兼容市面上所有常见的数据格式,ML.NET支持TensorFlow和ONNX模型。

如果你已经有了模型,那么你现在可以导入,并使其开始运行和预测产出。

目前ML.NET运行在 Windows,linux和macOS上,当然需要.NET Core/5/6/7等支持。

2.AutoML

全称是自动机器学习,给定数据集后,它可以运行 AutoML 来循环访问不同的数据转换、机器学习算法和超参数,以选择最佳模型,微软出品,就这么牛逼。

一般传统的机器学习工作流程如下:
在这里插入图片描述
其中预处理、训练和评估是一个实验性和迭代过程,需要多次试验,直到获得满意的结果。

由于这些任务往往是重复的,因此 AutoML 可以帮助自动执行这些步骤。 除了自动化之外,在训练和评估过程中还使用优化技术来查找和选择算法和超参数。
在这里插入图片描述

3 ML.NET能力范畴

ML.NET提供了预测模型,可以做以下工作。
在这里插入图片描述

4 使用ML.NET的流程

使用ML.NET来进行机器学习,其流程还是比较简单的。
1. 将训练数据收集并加载到 IDataView 对象中
2. 指定操作的管道,以提取特征并应用机器学习算法
3. 通过在管道上调用 Fit() 来训练模型 评估模型并通过迭代进行改进
4. 将模型保存为二进制格式,以便在应用程序中使用
5. 将模型加载回 ITransformer 对象 通过调用
6. CreatePredictionEngine.Predict() 进行预测

在这里插入图片描述

5. 一个小例子

来源自官网的一个例子,使用拟合斜线预测房价。

MLContext mlContext = new MLContext();
HouseData[] houseData = {
               new HouseData() { Size = 1.1F, Price = 1.2F },
               new HouseData() { Size = 1.9F, Price = 2.3F },
               new HouseData() { Size = 2.8F, Price = 3.0F },
               new HouseData() { Size = 3.4F, Price = 3.7F } };
IDataView trainingData = mlContext.Data.LoadFromEnumerable(houseData);

// 2. Specify data preparation and model training pipeline
var pipeline = mlContext.Transforms.Concatenate("Features", new[] { "Size" })
    .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Price", maximumNumberOfIterations: 100));

// 3. Train model
var model = pipeline.Fit(trainingData);
var testPriceDataView = model.Transform(trainingData);
var metrics = mlContext.Regression.Evaluate(testPriceDataView, labelColumnName: "Price");

// 4. Make a prediction
var size = new HouseData() { Size = 2.5F };
var price = mlContext.Model.CreatePredictionEngine<HouseData, Prediction>(model).Predict(size);


Console.WriteLine($"Predicted price for size: {size.Size * 1000} sq ft= {price.Price * 100:C}k");


public class HouseData
{
    public float Size { get; set; }
    public float Price { get; set; }
}

public class Prediction
{
    [ColumnName("Score")]
    public float Price { get; set; }
}

在这里插入图片描述
拟合回归是最简单的一个,也是入门最好的算法了。
模型也很简单,就是计算出 在这里插入图片描述

总结

一切看起来比较顺畅,祝你好运!
让我们每天进步一点点!

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

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

相关文章

vue学习31~39(列表过滤+列表排序+vue检测data中的数据+收集表单数据+过滤器)

1.14 列表过滤 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

VM虚拟机三种网络配置详解(桥接、NAT、仅主机)

在学习网络配置之前&#xff0c;需要搞明白有关于网络的一些基本概念&#xff0c;什么是ip&#xff0c;子网掩码&#xff0c;网段&#xff0c;网关&#xff1f;这里只做最简单的解释&#xff0c;实际上远远不止这些。 网络名词 ip 在现实生活中&#xff0c;这么大的一个中国…

bootstrap标签和导航条件组件学习(七)

标签和导航条件组件 这里的标签是不能切换的&#xff0c;它是静态的&#xff0c;在JavaScrapt插件里面是是可以切换页面的 需要配合插件 加选中状态&#xff1a; 它是自适应屏幕宽度&#xff1a; 胶囊式标签下拉菜单&#xff1a; 复制代码放到页面中&#xff1a; div 的class…

KubeEdge设备接入的mqtt调试

kubeedge的设备接入是用mqtt进行转接的。但是如果遇到一些问题需要排查问题时&#xff0c;希望可以查看终端发的mqtt消息。 目前 mosquitto 没有看到有进行消息查看的机制&#xff08;也可能我不知道&#xff09; EMQ可以进行消息查看。 1.安装EMQ 快速开始 | EMQX 5.0 文…

数据存储——声音存储

声音数字化一、声音的采样&#xff08;一&#xff09;信号分类1.模拟信号2. 数字信号&#xff08;二&#xff09;存储1、采样2.量化3.编码1.数字音频的技术指标2.未经压缩的数字音频的数据量&#xff08;字节&#xff08;8bit&#xff09;&#xff09;总结 声音的数字化过程一、…

[附源码]SSM计算机毕业设计校园一卡通管理信息系统台JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

zabbix监控Nginx

目录 一、环境准备 二、部署Nginx被监控端 三、自定义Nginx监控key 四、给目标主机创建监控项 一、环境准备 搭建zabbix基础环境 zabbix基础环境部署参照&#xff1a;zabbix基础环境部署_桂安俊kylinOS的博客-CSDN博客 以下实验部署均基于上述环境 二、部署Nginx被监控端…

芯片级解密YMTC NAND Xtacking 3.0技术

长江存储YMTC自从2016年成立以来&#xff0c;一直在吸引外界的关注。作为NAND国产厂商&#xff0c;被寄予厚望。在2018年FMS闪存峰会发布了Xtacking 1.0的NAND架构&#xff0c;凭借该技术荣获了“最具创新初创闪存企业”。 在2019年又发布了Xtacking 2.0的NAND架构。根据官网介…

xss-labs/level8

单单从界面上看 只剩下一个输出点了 但是界面毕竟就是界面 而源代码才是更深层的东西 通过源代码我们看得出来 有两个输出点 第一处是经过htmlspecialchars转义之后然后插入 第二处则是对关键字进行了下划线插入操作 我们试试看构造如下 " onclickjavascript:alert(…

Qt(Python+Qt)QMainWindow的splitDockWidget方法将QDockWidget停靠窗分割排列

主窗口的splitDockWidget方法用于将一个停靠窗占据的空间分割成两部分&#xff0c;原有停靠窗放置在第一部分的区域&#xff0c;另一个停靠窗放置在第二部分的区域。调用语法&#xff1a; splitDockWidget( QDockWidget first, QDockWidget second, Qt.Orientation orientatio…

疫情下就业形势怎样?存在抗衰行业吗?

三年的疫情下&#xff0c;全球各国的经济都受到了重要影响。特别是今年以来&#xff0c;国际形势复杂严峻&#xff0c;国内疫情点、面频发&#xff0c;对经济运行的冲击和影响加大。 这一场持续三年的疫情&#xff0c;给很多正常人的工作和生活都带来了不确定性&#xff0c;也给…

转扩!寻找G2022次列车“旅客”

各位求职朋友大家好&#xff0c;欢迎乘坐G2022次列车 本次列车为6节编组&#xff0c;由上海开往北京&#xff0c;途径宁波、重庆 本次列车乘务组全体工作人员为您提供全方位福利待遇 上车地址&#xff1a;上海擎创信息技术有限公司 - 社会招聘 (eoitek.com) 如您还需其他帮助…

架构体系-黑马学习2:-业务幂等性技术架构体系(1)

25min 以下涉及到的都是一人操作时候&#xff0c;多次点击造成的并发&#xff0c;对幂等性问题的影响。 大多适用场景&#xff0c;都是单表。没有兼顾数据库分库分表分区场景。 幂等性定义&#xff1a;无论对某一个资源操作了多少次&#xff0c;其影响都应该是相同的。换句话…

Kepserver EX6配置opc ua服务端 以及客户端

一.Kepserver EX6下载 链接&#xff1a;https://pan.baidu.com/s/1zNr-J0vmBdu9qmI1GtXxrw 提取码&#xff1a;wqcl 二.Kepserver EX6安装 点击安装包》选择“简体中文语言包”》一直默认下一步就可以直到结束安装 下载包中有破解补丁的详细使用说明这里就不多做说明了 下面…

《联邦学习实战—杨强》之使用Python从零开始实现一个简单的横向联邦学习模型

文章目录前言环境准备完整代码配置文件(conf.json)获取数据集(datasets.py)获取PyTorch中自带深度学习网络预训练模型(models.py)客户端(client.py)服务端(server.py)main.py运行知识点补充argparse基本用法tensor.copy_()[Python dict() 函数](https://www.runoob.com/python/…

Redis——》数据类型:zset(有序集合)

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 Redis——》数据类型&#xff1a;zset&#xff08;有序集合&#xff09;一、…

基于SpringBoot的在线点餐系统【附源码】

功能模块设计 技术概要 前端技术&#xff1a;JQuery&#xff0c;Thymeleaf&#xff0c; CSS 后端技术&#xff1a;SpringBoot&#xff0c;SpringMVC&#xff0c;mybaits 数据库&#xff1a;mysql 主要功能 首页实现 主页也是网址的入口处,一般包括了:LOGO、导航、Banner、…

C指针之初始化(三)

一、引言 C/C语言中引入了指针&#xff0c;使得程序能够直接访问内存地址&#xff0c;使得很多复杂的操作变得简单&#xff0c;同时也提高了程序的运行效率。指针即是地址&#xff0c;但是地址却是通过指针变量来存储的。因此我们通常所说的指针在很多时候说的都是指针变量。指…

AzkabanExecutorServer自动注册分析

启动AzkabanExecutorServer发现会自动注册&#xff0c;但是active默认为0&#xff0c;需要修改为1&#xff0c;否则 SELECT id, host, port, active FROM executors where activetrue查询不到记录&#xff0c;导致 AzkabanWebServer启动时候还是失败。 因此azkaban的正确启动…

MySQL的行锁和表锁

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题&am…