ML.NET速览

什么是ML.NET?

ML.NET是由微软创建,为.NET开发者准备的开源机器学习框架。它是跨平台的,可以在macOS,Linux及Windows上运行。

机器学习管道

ML.NET通过管道(pipeline)方式组合机器学习过程。整个管道分为以下四个部分:

  • Load Data 加载数据

  • Transform Data 转换数据

  • Choose Algorithm 选择算法

  • Train Model 训练模型

示例

建立一个控制台项目。

dotnet new console -o myApp
cd myApp

添加ML.NET类库包。

dotnet add package Microsoft.ML

在工程文件夹下创建一个名为iris-data.txt的文本文件,内容如下:

5.1,3.5,1.4,0.2,Iris-setosa4.9,3.0,1.4,0.2,Iris-setosa4.7,3.2,1.3,0.2,Iris-setosa4.6,3.1,1.5,0.2,Iris-setosa5.0,3.6,1.4,0.2,Iris-setosa5.4,3.9,1.7,0.4,Iris-setosa4.6,3.4,1.4,0.3,Iris-setosa5.0,3.4,1.5,0.2,Iris-setosa4.4,2.9,1.4,0.2,Iris-setosa4.9,3.1,1.5,0.1,Iris-setosa5.4,3.7,1.5,0.2,Iris-setosa4.8,3.4,1.6,0.2,Iris-setosa4.8,3.0,1.4,0.1,Iris-setosa4.3,3.0,1.1,0.1,Iris-setosa5.8,4.0,1.2,0.2,Iris-setosa5.7,4.4,1.5,0.4,Iris-setosa5.4,3.9,1.3,0.4,Iris-setosa5.1,3.5,1.4,0.3,Iris-setosa5.7,3.8,1.7,0.3,Iris-setosa5.1,3.8,1.5,0.3,Iris-setosa5.4,3.4,1.7,0.2,Iris-setosa5.1,3.7,1.5,0.4,Iris-setosa4.6,3.6,1.0,0.2,Iris-setosa5.1,3.3,1.7,0.5,Iris-setosa4.8,3.4,1.9,0.2,Iris-setosa5.0,3.0,1.6,0.2,Iris-setosa5.0,3.4,1.6,0.4,Iris-setosa5.2,3.5,1.5,0.2,Iris-setosa5.2,3.4,1.4,0.2,Iris-setosa4.7,3.2,1.6,0.2,Iris-setosa4.8,3.1,1.6,0.2,Iris-setosa5.4,3.4,1.5,0.4,Iris-setosa5.2,4.1,1.5,0.1,Iris-setosa5.5,4.2,1.4,0.2,Iris-setosa4.9,3.1,1.5,0.1,Iris-setosa5.0,3.2,1.2,0.2,Iris-setosa5.5,3.5,1.3,0.2,Iris-setosa4.9,3.1,1.5,0.1,Iris-setosa4.4,3.0,1.3,0.2,Iris-setosa5.1,3.4,1.5,0.2,Iris-setosa5.0,3.5,1.3,0.3,Iris-setosa4.5,2.3,1.3,0.3,Iris-setosa4.4,3.2,1.3,0.2,Iris-setosa5.0,3.5,1.6,0.6,Iris-setosa5.1,3.8,1.9,0.4,Iris-setosa4.8,3.0,1.4,0.3,Iris-setosa5.1,3.8,1.6,0.2,Iris-setosa4.6,3.2,1.4,0.2,Iris-setosa5.3,3.7,1.5,0.2,Iris-setosa5.0,3.3,1.4,0.2,Iris-setosa7.0,3.2,4.7,1.4,Iris-versicolor6.4,3.2,4.5,1.5,Iris-versicolor6.9,3.1,4.9,1.5,Iris-versicolor5.5,2.3,4.0,1.3,Iris-versicolor6.5,2.8,4.6,1.5,Iris-versicolor5.7,2.8,4.5,1.3,Iris-versicolor6.3,3.3,4.7,1.6,Iris-versicolor4.9,2.4,3.3,1.0,Iris-versicolor6.6,2.9,4.6,1.3,Iris-versicolor5.2,2.7,3.9,1.4,Iris-versicolor5.0,2.0,3.5,1.0,Iris-versicolor5.9,3.0,4.2,1.5,Iris-versicolor6.0,2.2,4.0,1.0,Iris-versicolor6.1,2.9,4.7,1.4,Iris-versicolor5.6,2.9,3.6,1.3,Iris-versicolor6.7,3.1,4.4,1.4,Iris-versicolor5.6,3.0,4.5,1.5,Iris-versicolor5.8,2.7,4.1,1.0,Iris-versicolor6.2,2.2,4.5,1.5,Iris-versicolor5.6,2.5,3.9,1.1,Iris-versicolor5.9,3.2,4.8,1.8,Iris-versicolor6.1,2.8,4.0,1.3,Iris-versicolor6.3,2.5,4.9,1.5,Iris-versicolor6.1,2.8,4.7,1.2,Iris-versicolor6.4,2.9,4.3,1.3,Iris-versicolor6.6,3.0,4.4,1.4,Iris-versicolor6.8,2.8,4.8,1.4,Iris-versicolor6.7,3.0,5.0,1.7,Iris-versicolor6.0,2.9,4.5,1.5,Iris-versicolor5.7,2.6,3.5,1.0,Iris-versicolor5.5,2.4,3.8,1.1,Iris-versicolor5.5,2.4,3.7,1.0,Iris-versicolor5.8,2.7,3.9,1.2,Iris-versicolor6.0,2.7,5.1,1.6,Iris-versicolor5.4,3.0,4.5,1.5,Iris-versicolor6.0,3.4,4.5,1.6,Iris-versicolor6.7,3.1,4.7,1.5,Iris-versicolor6.3,2.3,4.4,1.3,Iris-versicolor5.6,3.0,4.1,1.3,Iris-versicolor5.5,2.5,4.0,1.3,Iris-versicolor5.5,2.6,4.4,1.2,Iris-versicolor6.1,3.0,4.6,1.4,Iris-versicolor5.8,2.6,4.0,1.2,Iris-versicolor5.0,2.3,3.3,1.0,Iris-versicolor5.6,2.7,4.2,1.3,Iris-versicolor5.7,3.0,4.2,1.2,Iris-versicolor5.7,2.9,4.2,1.3,Iris-versicolor6.2,2.9,4.3,1.3,Iris-versicolor5.1,2.5,3.0,1.1,Iris-versicolor5.7,2.8,4.1,1.3,Iris-versicolor6.3,3.3,6.0,2.5,Iris-virginica5.8,2.7,5.1,1.9,Iris-virginica7.1,3.0,5.9,2.1,Iris-virginica6.3,2.9,5.6,1.8,Iris-virginica6.5,3.0,5.8,2.2,Iris-virginica7.6,3.0,6.6,2.1,Iris-virginica4.9,2.5,4.5,1.7,Iris-virginica7.3,2.9,6.3,1.8,Iris-virginica6.7,2.5,5.8,1.8,Iris-virginica7.2,3.6,6.1,2.5,Iris-virginica6.5,3.2,5.1,2.0,Iris-virginica6.4,2.7,5.3,1.9,Iris-virginica6.8,3.0,5.5,2.1,Iris-virginica5.7,2.5,5.0,2.0,Iris-virginica5.8,2.8,5.1,2.4,Iris-virginica6.4,3.2,5.3,2.3,Iris-virginica6.5,3.0,5.5,1.8,Iris-virginica7.7,3.8,6.7,2.2,Iris-virginica7.7,2.6,6.9,2.3,Iris-virginica6.0,2.2,5.0,1.5,Iris-virginica6.9,3.2,5.7,2.3,Iris-virginica5.6,2.8,4.9,2.0,Iris-virginica7.7,2.8,6.7,2.0,Iris-virginica6.3,2.7,4.9,1.8,Iris-virginica6.7,3.3,5.7,2.1,Iris-virginica7.2,3.2,6.0,1.8,Iris-virginica6.2,2.8,4.8,1.8,Iris-virginica6.1,3.0,4.9,1.8,Iris-virginica6.4,2.8,5.6,2.1,Iris-virginica7.2,3.0,5.8,1.6,Iris-virginica7.4,2.8,6.1,1.9,Iris-virginica7.9,3.8,6.4,2.0,Iris-virginica6.4,2.8,5.6,2.2,Iris-virginica6.3,2.8,5.1,1.5,Iris-virginica6.1,2.6,5.6,1.4,Iris-virginica7.7,3.0,6.1,2.3,Iris-virginica6.3,3.4,5.6,2.4,Iris-virginica6.4,3.1,5.5,1.8,Iris-virginica6.0,3.0,4.8,1.8,Iris-virginica6.9,3.1,5.4,2.1,Iris-virginica6.7,3.1,5.6,2.4,Iris-virginica6.9,3.1,5.1,2.3,Iris-virginica5.8,2.7,5.1,1.9,Iris-virginica6.8,3.2,5.9,2.3,Iris-virginica6.7,3.3,5.7,2.5,Iris-virginica6.7,3.0,5.2,2.3,Iris-virginica6.3,2.5,5.0,1.9,Iris-virginica6.5,3.0,5.2,2.0,Iris-virginica6.2,3.4,5.4,2.3,Iris-virginica5.9,3.0,5.1,1.8,Iris-virginica

粘贴下面的代码到Program文件中。

640?wx_fmt=png

640?wx_fmt=png

通过dotnet run命令运行程序后可得到预测结果。

Predicted flower type is: Iris-virginica

解例

例子中定义了两个类,IrisData与IrisPrediction。IrisData类是用于训练的数据结构,而IrisPrediction则用于预测。

MLContext类用于定义ML.NET的上下文(context),可以理解为是它的运行时环境。

接着,创建一个TextReader,用于读取数据集文件,可以看到其中规定了读取的格式。这里即是机器学习管道的第一步。

第二步,转换IrisData类中Label属性的类型,使之成为数值类型,因为只有数值类型的数据才能在模型训练中被使用。再将SepalLength,SepalWidth,PetalLength与PetalWidth合并为一,统合为数据集的Features。

第三步,为训练选择合适的算法,并传入标签(Label)和特征(Features)。

第四步,训练模型。

完成模型后,就可以用它进行预测了。因为最后预测的结果是字符串类型,所以在上述第三步的操作后有必要加上转换操作,把结果从数值类型再转回字符串类型。

相关文章:

  • 使用ML.NET实现基于RFM模型的客户价值分析

  • 开源的,跨平台的.NET机器学习框架ML.NET

原文地址:  https://www.cnblogs.com/kenwoo/p/9980303.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

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

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

相关文章

.NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划

写在前面千呼万唤始出来,首先,请允许我长吸一口气!真没想到一份来自28岁老程序员的自白 这篇文章会这么火,更没想到的是张善友队长的公众号居然也转载了这篇文章,这就导致两天的时间就有两百多位读者朋友加入了.NET Co…

.Net Core微服务系列--理论篇

微服务的由来微服务最早由Martin Fowler与James Lewis于2014年共同提出来的,但是微服务也不是一个全新的概念,它是由一系列在实践中获得成功并流行起来的概念中总结出来的一种模式,一种概念。而这一系列的概念大体上有这些:领域驱动设计(DDD)…

Asp.net Core Jenkins Docker 实现一键化部署

写在前面在前段时间尝试过用Jenkins来进行asp.net core 程序在IIS上面的自动部署。大概的流程是Jenkins从git上获取代码最开始Jenkins是放在Ubuntu的Docker中,但是由于Powershell执行的原因,就把Jenkins搬到了windows上。因为我们网站的部署需要停掉IIS站…

“校长”潘淳:侠之大者,一蓑烟雨任平生

我是与丁磊、蔡文胜同时代的人,他们都是70后大我两岁。我的经历与爱好与丁磊有丁点接近,但是没他下海走一走的胆识。又或者与蔡文胜一样,也算是国内最早的域名代理商,却又没有投资的勇气。—— 潘淳《IT英雄传》这一期的主角儿是江…

微软Cloud+AI本地化社区贡献指南

本文主要介绍微软CloudAI本地化社区,以及通过多种途径贡献本地化的操作指南。什么是本地化社区CloudAI本地化社区是微软技术社区的组成部分之一,负责对微软官方技术文档本地化的支持工作。微软近些年大力拥抱开源,不断在各类技术社区保持与开…

C#:在Task中使用依赖注入的Service/EFContext

dotnet core时代,依赖注入基本已经成为标配了,这就不多说了.前几天在做某个功能的时候遇到在Task中使用EF DbContext的问题,学艺不精的我被困扰了不短的一段时间,于是有了这个文章.先说一下代码结构和场景.首先有一个HouseDbContext,代码大概是下面这样:public class HouseDbCo…

pkusc2021游记

文章目录Day 0Day 1Day 2Day 3Day 0 车,公交,飞机,公交,车 坐了半天的交通终于到了,整个人都坐的晕乎乎的,然后看了下学校位置吃了饭就没事回酒店了。 Day 1 早上是报道,九点才开始&#xf…

DevOps/.NET 微服务 秋季分享会领优惠门票

参与活动【活动(深圳)】DevOps/.NET 微服务 秋季分享会,优惠门票等你来领 的以下10位同学微信联系我: geffzhang 领票

【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流

上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们将介绍如何实现自定义客户端的限流功能,来进一步完善网关的基础功能。…

1.14 日志(递推ybtoj)

明天要模拟,n年未碰电脑,先不学新的了。。。。 1.错排问题 dp最棒了 code: #include #include #include #include #include using namespace std; const int MINT_MAX; long long f[25][25]{ };//f[i][j]表示有i个数,其中j个数可以随便填 …

平面分割 题解(1.16 递推模拟)

平面分割 代码一行,解析一箱~~ 解析 计f[i]:从1到i累加之和 先假设最好情况,p2; 此时第一条会增加1个 第二条与第一条相交,再加2个 第三条与前2条相交,再加3个 … 故n条时共增加f[n]个,共f[n]…

.NET Core实战项目之CMS 第二章 入门篇-快速入门ASP.NET Core看这篇就够了

本来这篇只是想简单介绍下ASP.NET Core MVC项目的(毕竟要照顾到很多新手朋友),但是转念一想不如来点猛的(考虑到急性子的朋友),让你通过本文的学习就能快速的入门ASP.NET Core。既然是快速入门所以过多过深…

题解: 区间合并(opj 2-4-7620)

一开始轻视这道题了,想用各种各样奇怪的区间标记把这道题水掉,结果WA声一片。。(我大意了,没有AC!) 后来大脑开始思考,贪心解决掉了,AC快乐~~(忽略这道题来自分治…qwq&a…

牛客题霸 [二叉搜索树的第k个结点]C++题解/答案

牛客题霸 [二叉搜索树的第k个结点]C题解/答案 题目: 给定一棵二叉搜索树,请找出其中的第k小的结点。 题解: 二叉搜索树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空&#xf…

内部设计师揭秘!王者峡谷中竟有隐藏的c++代码??!!腾讯已经炸了!!!

解析 模拟的时候用关于n的一元二次方程实根公式解的不亦乐乎。。。后来经高人提醒才发现万物皆为斐波拉契。。 就很《离谱》 于是代码就不难了 也算有收获吧,遇到这种看起来莫名其妙的题时,不着急死磕,可以先写个上图一样的程序找找规律 “实…

.NET Core实战项目之CMS 第三章 入门篇-源码解析配置文件及依赖注入

写在前面上篇文章我给大家讲解了ASP.NET Core的概念及为什么使用它,接着带着你一步一步的配置了.NET Core的开发环境并创建了一个ASP.NET Core的mvc项目,同时又通过一个实战教你如何在页面显示一个Content的列表。不知道你有没有跟着敲下代码&#xff0c…

对.NET Core未来发展趋势的浅层判断

经常听到园里.NET开发人员在抱怨生态不如JAVA,想要转JAVA,所谓打不过你,我就加入你!杜兰特的思维方式固然是获取总冠军的一种方式,但是我们要关起门来问自己有没有杜兰特的实力。用开发生态来类比NBA不是特别恰当&…

2021牛客暑期多校训练营1 H-Hash Function(数学+FFT)

H-Hash Function Shining_xzl大佬题解 本题答案符合题意的充分必要条件是:不能是任意两个数的差以及他们的因数,因此只需用用FFT求出这些数的差,记为差的集合。 从小到大考虑一个答案,以及答案的倍数是不是上述差的集合&#x…

priority_queue+贪心:运输(题解)

解析 不难发现每次都应合并最大的一对,从而使局部最优带动整体最优 sort就会很自然的想到 但是问题是合并完之后的新值可能已经不是当前最大了(WA。。qwq) 于是想到每次循环sort一遍,结果n^2logn又超时了。。。 在一位高人的指引…

【话题揭秘】某大型国有银行的敏捷落地实践

“某大型国有银行的敏捷落地实践”话题介绍银行行业是强烈依赖IT的非IT行业,传统金融要想打破现有局面,除了要解决外因,还要突破内部因素,其中一点就是技术重塑和战略手段,也就是常说的数字化转型,这也是经…