VS Code + ML.NET 玩转交互式机器学习

在上一篇文章中,我们介绍了 .NET Interactive Notbook,可以进行代码实时运行和交互式展示。

这对于ML.NET来说非常棒,可以运用到许多场景,比如数据探索、绘制数据图表、编制教学课件等。

下面,我们就用出租车费预测(https://github.com/feiyun0112/machinelearning-samples.zh-cn/tree/master/samples/csharp/getting-started/Regression_TaxiFarePrediction)来进行演示。

1.创建Notebook

首先,VS Code需要安装“.NET Interactive Notebooks”扩展。

新建文件,编程语言选择“.NET Interactive”,保存文件名后缀为“.ipynb”。

添加Markdown标记,说明一下这个机器学习任务要解决的问题场景。

完成编辑后,可以自动显示Markdown标记结果:

2.安装Nuget包

引用后面需要使用的NuGet包,这里,我们将使用ML.NET进行机器学习和XPlot绘制图表。

运行代码,下载和安装NuGet包。

可以看到,安装时间还是比较长的,所以可以放在单独的代码块提前运行。

3.定义DataStructures

定义加载数据以及训练或预测时,需要使用输入类和预测类,代码如下:

 public class TaxiTrip
{[LoadColumn(0)]public string VendorId;[LoadColumn(1)]public string RateCode;[LoadColumn(2)]public float PassengerCount;[LoadColumn(3)]public float TripTime;[LoadColumn(4)]public float TripDistance;[LoadColumn(5)]public string PaymentType;[LoadColumn(6)]public float FareAmount;
}

4.加载数据

加载训练和测试数据集,文件放在Notebook同一目录下

MLContext mlContext = new MLContext(seed: 0);string TrainDataPath = "./taxi-fare-train.csv";
string TestDataPath = "./taxi-fare-test.csv";
IDataView baseTrainingDataView = mlContext.Data.LoadFromTextFile<TaxiTrip>(TrainDataPath, hasHeader: true, separatorChar: ',');
IDataView testDataView = mlContext.Data.LoadFromTextFile<TaxiTrip>(TestDataPath, hasHeader: true, separatorChar: ',');IDataView trainingDataView = mlContext.Data.FilterRowsByColumn(baseTrainingDataView, nameof(TaxiTrip.FareAmount), lowerBound: 1, upperBound: 150);
display(h4("展示训练数据:"));
var someRows = mlContext.Data.CreateEnumerable<TaxiTrip>(trainingDataView, reuseRowObject: false).Take(4).ToArray();
display(someRows);

我们筛选了出租车票金额在1-150之间的数据作为训练数据,并用内置函数display展示4行训练数据内容: 

5.图形化展示数据

图形方式能让我们更好地理解数据,选取100条训练数据,看看费用的分布情况:

var faresHistogram = Chart.Plot(new Histogram() { x = trainingDataView.GetColumn<float>("FareAmount").Take(100).ToArray(), autobinx = false, nbinsx = 20 });
var layout = new Layout.Layout() { title = "出租车费分布" };
faresHistogram.WithLayout(layout);
faresHistogram.WithXTitle("费用范围");
faresHistogram.WithYTitle("出行数");display(faresHistogram)

可以看到费用大多数在5-10之间, 

6.训练模型

现在,让我们真正开始执行机器学习。我们将首先处理数据转换,然后添加训练器/算法,最后训练模型。

在执行窗口底部可以看到,训练速度还是比较快的,在我的机器上只需要1.7秒。

7.评估模型

我们需要这一步来总结我们的模型对新数据的准确性。为此,上一步中的模型针对另一个未在训练中使用的数据集运行(taxi-fare-test.csv)。此数据集也包含已知的费用。Regression.Evaluate()计算已知费用和模型预测的费用之间差异的各种指标。

IDataView predictions = trainedModel.Transform(testDataView);
var metrics = mlContext.Regression.Evaluate(predictions, labelColumnName: "Label", scoreColumnName: "Score");display(metrics)

6.绘制对比图

最后,我们绘制预测与实际值的对比图。如果回归模型工作得很好,那么这些点大部分应该是围绕着一条直线的,这条直线就是回归线。

回归线越接近“完美”(预测值等于测试数据集中的实际值),模型的质量就越好。

结论

后面的保存和使用模型,我们就不再演示了,请大家自行探索。

通过上面的示例,可以看到非常棒的交互体验。欢迎大家继续挖掘.NET Interactive的潜力,玩转交互式机器学习!!!

欢迎关注我的个人公众号”My IO“

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

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

相关文章

ts定义数组类型_ts基本数据类型

typescript基础数据类型布尔值 示例代码最基本的数据类型就是简单的true/false值&#xff0c;在JavaScript和TypeScript里叫做boolean(其它语言中也一样)。let a: boolean trueconsole.log(a)let b: boolean falseconsole.log(b)let c: booleanconsole.log(c)执行结果truefal…

神还原女神照片!GAN为百年旧照上色

全世界只有3.14 % 的人关注了数据与算法之美如何把女神的黑白照片变成彩照&#xff1f;今日&#xff0c;数据汪发现新加坡 GovTech 数据科学与人工智能部门在 Medium 上介绍了一个为百年旧照上色的项目。这个项目名为 Colourise.sg&#xff0c;最初是该团队&#xff08;成员包括…

cacti+nagios 整合遇到的问题

cacti安装成功了&#xff0c;下载一个npc插件来套用nagios&#xff0c;nagios要用ndoutils和cacti连接。主要安装ndoutils出现的问题。启动ndoutils时出错&#xff1a;/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg错误提示&#xff1a;Support for th…

谈谈MySQL面试的45个常见问题

前两天&#xff0c;我跟一个面试官聊天&#xff0c;发现一个普遍想象&#xff0c;不少候选人&#xff0c;对数据库的认知&#xff0c;还处在比较基础的阶段&#xff0c;以为会写“增删改查”、做表关联就足够了&#xff0c;那些工作中经常出现的问题&#xff0c;却支支吾吾答不…

TensorFlow的这些骚操作你都知道吗?

TensorFlow Lite 2019 年发展蓝图分为四个关键部分&#xff1a;易用性、性能、优化和可移植性。自 2015 年 11 月 9 号发布之后&#xff0c;TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么&#xff1f;TensorFlow 是一个大规模机器学…

实现图片打乱_疫情过后,是否打乱了你前进的脚步?面对现状,你将如何开展新的征程?...

2020年的这个春节&#xff0c;一场疫情打乱了所有的计划。就在整个城市都躲起来的时候&#xff0c;有一群人却站了出来。他们背对着我们&#xff0c;却直面着生死&#xff0c;他们每一刻都在与时间赛跑&#xff0c;与死神抢人。他们是值得我们尊敬的人&#xff0c;是最敬爱的人…

SystemCenter2012SP1实践(23)私有云的权限设计

SCVMM和SCAC作为微软私有云的两个重要入口&#xff0c;由于私有云的资源是多部门公用的&#xff0c;为了防止权限扩大导致资源浪费和误操作的可能性&#xff0c;我们在企业中部署的时候&#xff0c;需要认真的规划好用户和相应级别管理员的权限设置。我是分隔线本文主要介绍身份…

面向.NET开发人员的Dapr——参考应用程序

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门Dapr reference applicationDapr 参考应用Earlier in the book, youve learned about the foundational benefits of D…

数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...

LSTM&#xff08;long short term memory&#xff0c;长短期记忆网络&#xff09;是预测时间序列最常用的神经网络模型之一。但是这种神经网络模型相当复杂&#xff0c;需要特定的结构、数据前期处理等操作。当在网上搜寻要学习的代码时&#xff0c;很难将另一个程序员的代码合…

一直被模仿,从未被超越的经典订阅号!

不管你昨天有多优秀&#xff0c;代表不了今天的辉煌&#xff0c;昨天的太阳永远晒不干今天的衣裳&#xff0c;以阳光心态迎接每一天。今天小编就给大家推荐几个越来越优秀的微信公众号希望把快乐和成长带给您长按二维码&#xff0c;选择【识别图中二维码】关注日读好书ID&#…

面向.NET开发人员的Dapr——总结和前景

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

每日一笑 | 周一,如何才能保持清醒?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;难怪数据汪每次喝咖啡都没啥用原来是没用对杯子...

查询两个日期间隔天数怎么算_大厂都是怎么用Java8代替SimpleDateFormat?

1 SimpleDateFormat 之坑1.1 格式化1.1.1 案例初始化一个Calendar&#xff0c;设置日期2020年12月29日​日志​这是由于混淆SimpleDateFormat的各种格式化模式&#xff1a;小写y是年大写Y是week year&#xff0c;即所在的周属于哪一年一年第一周的判断方式从getFirstDayOfWeek(…

Vertex Texture Fetch(VTF) Fragment Texture Fetch ( FTF )

在vertex shader里也可以检索纹理。我本来觉得这没什么好奇怪的&#xff0c;因为我一直也觉得这很当然可以啊~当初橙书(OpenGL Shading Language Edtion2)也说过texture2D这类函数不是fragment shader专用的&#xff0c;倒还有texture2DLod这种在vertex shader里专用的&#xf…

面向.NET开发人员的Dapr——机密

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

没找到rpm命令_Mysql的命令总结和PyMysql

Author&#xff1a;RunsenDate&#xff1a;2019/2/27作者介绍&#xff1a;Runsen目前大三下学期&#xff0c;专业化学工程与工艺&#xff0c;大学沉迷日语&#xff0c;Python&#xff0c; Java和一系列数据分析软件。导致翘课严重&#xff0c;专业排名中下。.在大学60%的时间&a…

银联再发道歉声明;印度发布吃鸡禁令;甘肃全省校园禁售辣条;波音面临50亿罚款;女子撕扯民警头发罚两百;这就是今天的大新闻。...

今天是3月18日农历二月十二今天星期一最近天气多变大家出门注意穿衣带伞下面是今天的大新闻银联再发道歉声明&#xff08;央视财经&#xff09;315晚会就“闪付”功能存在“隔空盗刷”的风险对广大消费者进行消费预警。3月16日下午&#xff0c;银联回应此事&#xff0c;表示隔空…

面向.NET开发人员的Dapr——可观察性

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

antd request 通过jsessionid传参数_Umi-request源码阅读

最近参照antd-pro脚手架进行开发&#xff0c;因此接触到了umi-request。umijs/umi-request​github.comumi-request对fetch进行了封装&#xff0c;简化了api的使用&#xff0c;结合了fetch和axios的特点&#xff0c;具体可参照umi-request的readme介绍。文件结构核心文件夹为sr…

随手能做194个实验,不呆板,轻松撬动大智慧

▲数据汪特别推荐点击上图进入玩酷屋玩具和学习看似是两个对立的东西&#xff0c;孩子天性爱玩&#xff0c;家长却希望孩子能多学习。不一定非要啃课本才能汲取知识&#xff0c;有时候&#xff0c;在轻松有趣的游戏中也能学到课堂上学不到的知识。让学习变得有趣、高效——给孩…