在上一篇文章中,我们介绍了 .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“

VS Code + ML.NET 玩转交互式机器学习相关推荐

  1. 手把手带你玩转Spark机器学习-使用Spark构建回归模型

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  2. 手把手带你玩转Spark机器学习-使用Spark进行数据处理和数据转换

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  3. 手把手带你玩转Spark机器学习-使用Spark进行数据降维

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  4. 使用C# 探索 ML.NET 中的不同机器学习任务

    什么是 ML.NET? ML.NET 是 Microsoft 开源的针对 .NET 应用程序的 跨平台机器学习库,允许您使用 C#.F# 或任何其他 .NET 语言执行机器学习任务.此外,ML.NET ...

  5. 在 Azure ML 上用 .NET 跑机器学习

    .NET 是一个跨平台,全场景应用的开源技术. 你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度, ML.NET / Tensorflow.NET / 不断在进步的 TorchShar ...

  6. CA周记 - 在 Azure ML 上用 .NET 跑机器学习

    .NET 是一个跨平台,全场景应用的开源技术.你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度,ML.NET / Tensorflow.NET / 不断在进步的 TorchSharp ...

  7. ML:MLOps系列讲解之《CRISP-ML (Q)ML生命周期过程—了解机器学习开发的标准过程模型—业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护》解读

    ML:MLOps系列讲解之<CRISP-ML (Q)ML生命周期过程-了解机器学习开发的标准过程模型-业务和数据理解→数据工程(数据准备)→ML模型工程→评估ML模型→模型部署→模型监控和维护& ...

  8. ML之ME/LF:机器学习之风控业务中常用模型评估指标PSI(人群偏移度指标)的的简介、使用方法、案例应用之详细攻略

    ML之ME/LF:机器学习之风控业务中常用模型评估指标PSI(人群偏移度指标)的的简介.使用方法.案例应用之详细攻略 目录 PSI(稳定度指标)的简介 1.如何计算PSI? (1).PSI计算过程

  9. ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现

    ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 目录 机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 代码实现

最新文章

  1. sql实现两张表的拷贝
  2. php7.0 + mysql5.7.10 + nginx7.0 web开发环境搭建(CentOS7)
  3. Oracle sql语句执行过程图文分析
  4. RDLC SubReports Exporting to Excel Are Ignored
  5. 2.odoo13的学习(odoo中的模型、模型类属性、字段属性等)
  6. ios开发 静音键设置_合肥包河区:连夜设置三道拦水坝只为按下中考“静音键”...
  7. AUTOSAR从入门到精通100讲(二十八)-AutoSar之CAN网络管理
  8. OpenMV(三)--实时获取摄像头图片
  9. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(1) - 概述
  10. Spark SQL 和 Hive UDF ExceptionInInitializerError getRemoteBlockReaderFromTcp BlockReaderFactory
  11. 无法显示添加端口对话框 服务器,服务器添加开放端口
  12. 深入浅出数据分析(一)——MySQL+EXCEL+R统计问卷调查
  13. wifi mesh测试软件,「可能是」最适合我的Mesh+WiFi6方案:Linksys Velop MX10600体验分享...
  14. 交易方法我的总结仔细看看
  15. 基础信念(二):框架、专注、勇气
  16. Google Analytics与百度统计比较
  17. 怎么理解JS Promise
  18. UVA - 10827 Maximum sum on a torus
  19. KVC原理分析及应用
  20. Android 蓝牙连接

热门文章

  1. 关于更换液晶屏(LCD)后“输入不支援”的一种解决方案
  2. 也谈cacti整合nagios(centos)
  3. 自定义vue-cli生成项目模板配置(1)
  4. Hadoop3.0 WordCount测试一直Accept 状态,Nodes of the cluster 页面node列表个数为0
  5. IOS 封装轮播图
  6. 读《一个程序猿的生命周期》有感
  7. 6款程序员不得不爱的bootstrap模板
  8. Easy UI中dategrid的getSelections方法只能获取一个id的解决办法
  9. POJ 1850 Code(组合数学)
  10. Android推送通知指南(转)