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,一经查实,立即删除!

相关文章

P6240 好吃的题目(分治+背包)

P6240 好吃的题目 类似于线段树分治,在每个节点预处理[l,mid],[mid1,r][l,mid],[mid1,r][l,mid],[mid1,r]的背包,然后询问即可 一般代码就类似下面的写法,但是此题有点卡空间于是稍微优化了一下空间。 时间复杂度O{nlog⁡nmax⁡(hi,ti)}O\{…

CF990G-GCD Counting【dfs】

正题 题目链接:https://www.luogu.com.cn/problem/CF990G 题目大意 给出一棵有点权的树,对于每个kkk求有多条路径的点权gcdgcdgcd为kkk 1≤n≤2105,1≤ai≤21051\leq n\leq 2\times 10^5,1\leq a_i\leq 2\times 10^51≤n≤2105,1≤ai​≤2105 解题思路 开始以为要…

牛客题霸 [ 旋转数组的最小数字] C++题解/答案

牛客题霸 [ 旋转数组的最小数字] C题解/答案 题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 NOTE:给出的所有元素都大于0,若数组…

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

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

2018CCF-CSP 5.二次求和(点分治)

5.二次求和 暴力 首先观察询问,树上链u→vu\to vu→v点权加,显然可以用树上差分LOJ dfs序4 O(1)O(1)O(1)完成此操作,然后考虑对这些权值对答案的影响? 设经过某点uuu符合条件的路径条数为pathu\text{path}_upathu​ 当uuu点权ccc…

P4323-[JSOI2016]独特的树叶【换根dp,树哈希】

正题 题目链接:https://www.luogu.com.cn/problem/P4323 题目大意 给出nnn个点的树和加上一个点之后的树(编号打乱)。 求多出来的是哪个点(如果有多少个就输出编号最小的)。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 定义…

牛客题霸 [ 数字在升序数组中出现的次数] C++题解/答案

牛客题霸 [ 数字在升序数组中出现的次数] C题解/答案 题目描述 统计一个数字在升序数组中出现的次数。 题解&#xff1a; 直接for循环&#xff0c;if判断一下&#xff0c;如果是目标的话ant 代码&#xff1a; class Solution { public:int GetNumberOfK(vector<int>…

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

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

codeforces1496 D. Let‘s Go Hiking(乱搞+讨论)

这题我tm服了&#xff0c;考试中途肯定添加了一组数据&#xff0c;提交完A了之后&#xff0c;还有20min结束&#xff0c;感觉写不了下一个题了&#xff0c;就下班了&#xff0c;谁知道它有填了一组测试数据把我的乱搞给卡过去了&#xff0c;我又被fst了&#xff1f;&#xff1f…

CF1511G-Chips on a Board【倍增】

正题 题目链接:https://www.luogu.com.cn/problem/CF1511G 题目大意 给出n∗mn*mn∗m的棋盘上每一行有一个棋子&#xff0c;双方轮流操作可以把一个棋子向左移动若干步&#xff08;不能不动&#xff09;&#xff0c;无法操作者输。 qqq次询问只留下期盼的l∼rl\sim rl∼r列时…

牛客题霸 [ 调整数组顺序使奇数位于偶数前面] C++题解/答案

牛客题霸 [ 调整数组顺序使奇数位于偶数前面] C题解/答案 题目描述 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有的奇数位于数组的前半部分&#xff0c;所有的偶数位于数组的后半部分&#xff0c;并保证奇数和奇数&#xff0c;偶数…

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

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

P5782-[POI2001]和平委员会【2-SAT】

正题 题目链接:https://www.luogu.com.cn/problem/P5782 题目大意 nnn对人&#xff0c;每对之间恰好有一个人出席。mmm对仇恨关系表示两个人不能同时出席。 求是否有解并输出。 1≤n≤8000,1≤m≤200001\leq n\leq 8000,1\leq m\leq 200001≤n≤8000,1≤m≤20000 解题思路 裸…

codeforces1497 E. Square-free division(数学+dp)

开学了&#xff0c;感觉没时间打cf了&#xff0c;上课听不懂&#xff0c;而且一直在忙转班的事情~~ 下周就要回学校了开心 昨天卡C题太久了&#xff0c;一直在想lcm的性质&#xff0c;还好最后回头了&#xff0c;当成构造题做了&#xff0c;瞎搞了搞就出来了&#xff0c;然后看…

牛客题霸 [合并二叉树] C++题解/答案

牛客题霸 [合并二叉树] C题解/答案 题目描述 已知两颗二叉树&#xff0c;将它们合并成一颗二叉树。合并规则是&#xff1a;都存在的结点&#xff0c;就将结点值加起来&#xff0c;否则空的位置就由另一个树的结点来代替。例如&#xff1a; 两颗二叉树是: Tree 1 1 / \ 3 2 / …

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

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

P4922-[MtOI2018]崩坏3?非酋之战!【dp】

正题 题目链接:https://www.luogu.com.cn/problem/P4922 题目大意 题目好长直接放了 在崩坏 3 中有一个叫做天命基地的地方&#xff0c;女武神们将在基地中开派对与敌人们厮杀。 女武神们的攻击力为 atkatkatk&#xff0c;她们将进行资源保卫战&#xff01; 天命基地中有 …

C. Minimum Grid Path(思维)

昨天晚上写的时候看错题了&#xff0c;以为并不是交替走&#xff0c;最后没时间了读了一遍题目发现是交替走&#xff0c;然后就秒了但是已经没时间写了。 其实昨天并不想写&#xff0c;不过看了下D题发现是个数学题&#xff0c;虽然我数学题非常渣渣&#xff0c;但是拿起笔就推…

牛客题霸 [扑克牌顺子] C++题解/答案

管理博文 牛客题霸 [扑克牌顺子] C题解/答案 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿&#xff01;&#x…

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

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