写在前面
准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正。
如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn
出租车费预测
| ML.NET 版本 | API 类型 | 状态 | 应用程序类型 | 数据类型 | 场景 | 机器学习任务 | 算法 |
|---|---|---|---|---|---|---|---|
| v0.7 | 动态 API | 最新版本 | 控制台应用程序 | .csv 文件 | 价格预测 | 回归 | Sdca 回归 |
在这个介绍性示例中,您将看到如何使用ML.NET预测出租车费。在机器学习领域,这种类型的预测被称为回归
问题
这个问题主要集中在预测纽约出租车的行程费用。从表面看,它似乎仅仅取决于行程的距离。但是,由于其他因素(比如额外的乘客或使用信用卡而非现金付款),纽约的出租车供应商收费不同。这种预测可用于出租车供应商向用户和司机提供乘车费用的估计。
为了解决这个问题,我们将使用下列输入建立一个ML模型:
- 供应商ID
- 费率代码
- 乘客数量
- 出行时间
- 出行距离
- 支付方式
并预测乘车的费用。
ML 任务 - 回归
回归的广义问题是预测给定参数的某些连续值,例如:
- 根据房间的数量、位置、建造年份等预测房子的价格。
- 根据燃油类型和汽车参数预测汽车燃油消耗量。
- 预测基于问题属性来修复问题的时间估计。
所有这些示例的共同特征是我们想要预测的参数可以取特定范围内的任何数值。 换句话说,这个值用integer或float/double表示,而不是由enum或boolean类型表示。
解决方案
为了解决这个问题,首先我们将建立一个ML模型。然后,我们将在现有数据的基础上训练模型,评估其有多好,最后我们将使用该模型来预测出租车费。

1. 建立模型
建立模型包括:上传数据(使用TextLoader加载taxi-fare-train.csv),对数据进行转换,以便ML算法(本例中为“StochasticDualCoordinateAscent”)能够有效地使用它:
//Create ML Context with seed for repeteable/deterministic results MLContext mlContext = new MLContext(seed: 0); // STEP 1: Common data loading configuration TextLoader textLoader = mlContext.Data.TextReader(new TextLoader.Arguments() { Separator = ",", HasHeader = true, Column = new[] { new TextLoader.Column("VendorId", DataKind.Text, 0), new TextLoader.Column("RateCode", DataKind.Text, 1), new TextLoader.Column("PassengerCount", DataKind.R4, 2), new TextLoader.Column("TripTime", DataKind.R4, 3), new TextLoader.Column("TripDistance", DataKind.R4, 4), new TextLoader.Column("PaymentType", DataKind.Text, 5), new TextLoader.Column(
