ML.NET CLI 命令参考

命令classificationregressionrecommendation命令是 ML.NET CLI 工具提供的主要命令。 通过这些命令,可以使用自动化机器学习(AutoML)以及示例 C# 代码为模型运行/评分,为分类、回归和建议模型生成高质量的 ML.NET 模型。 此外,生成用于训练模型的 C# 代码,用于研究模型的算法和设置。

注释

本文介绍 ML.NET CLI 和 ML.NET AutoML,目前为预览版,材料可能会更改。

概述

示例用法:

mlnet regression --dataset "cars.csv" --label-col price

mlnet ML 任务命令(classificationregressionrecommendationforecasting)生成以下资产:

  • 序列化模型 .zip(“最佳模型”)可供使用。
  • 用于运行/评分生成的模型的 C# 代码。
  • 包含用于生成该模型的训练代码的 C# 代码。

前两个资产可以直接用于最终用户应用(ASP.NET 核心 Web 应用、服务、桌面应用等),以便通过模型进行预测。

第三个资产(训练代码)显示 CLI 使用哪些 ML.NET API 代码来训练生成的模型,以便可以调查模型的特定算法和设置。

例子

分类问题的最简单 CLI 命令(AutoML 从提供的数据推断大部分配置):

mlnet classification --dataset "customer-feedback.tsv" --label-col Sentiment

回归问题的另一个简单的 CLI 命令:

mlnet regression --dataset "cars.csv" --label-col Price

使用训练数据集、测试数据集和进一步自定义显式参数创建和训练分类模型:

mlnet classification --dataset "/MyDataSets/Population-Training.csv" --test-dataset "/MyDataSets/Population-Test.csv" --label-col "InsuranceRisk" --cache on --train-time 600

命令选项

mlnet ML 任务命令(classificationregressionrecommendationforecastingtrain)基于提供的数据集和 ML.NET CLI 选项训练多个模型。 这些命令还选择最佳模型,将模型保存为序列化 .zip 文件,并生成相关的 C# 代码用于评分和训练。

分类选项

运行 mlnet classification 将训练分类模型。 如果希望 ML 模型将数据分类为 2 个或多个类(例如情绪分析),请选择此命令。

mlnet classification

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

回归选项

运行 mlnet regression 将训练回归模型。 如果希望 ML 模型预测数值(例如价格预测),请选择此命令。

mlnet regression

--dataset <path> (REQUIRED)

--label-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--ignore-cols <cols>

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

建议选项

运行 mlnet recommendation 将训练建议模型。 如果希望 ML 模型根据分级(例如产品建议)向用户推荐项目,请选择此命令。

mlnet recommendation

--dataset <path> (REQUIRED)

--item-col <col> (REQUIRED)

--rating-col <col> (REQUIRED)

--user-col <col> (REQUIRED)

--cache <option>

--has-header (Default: true)

--log-file-path <path>

--name <name>

-o, --output <path>

--test-dataset <path>

--train-time <time> (Default: 30 minutes, in seconds)

--validation-dataset <path>

-v, --verbosity <v>

-?, -h, --help

无效的输入选项会导致 CLI 工具发出有效输入列表和错误消息。

预测选项

运行 mlnet forecasting 将训练时序预测模型。 如果希望 ML 模型根据历史数据预测值(例如销售预测),请选择此命令。

mlnet forecasting

--dataset <dataset> (REQUIRED)

--horizon <horizon> (REQUIRED)

--label-col <label-col> (REQUIRED)

--time-col <time-col> (REQUIRED)

--cache <Auto|Off|On>

--has-header

--log-file-path <log-file-path>

--name <name>

-o, --output <output>

--test-dataset <test-dataset>

--train-time <train-time>

-v, --verbosity <verbosity>

培训选项

运行 mlnet train 将基于模型生成器生成的“mbconfig”文件训练模型。 若要使此命令正常工作,训练数据必须与“mbconfig”文件位于同一目录中。

-training-config <training-config> (REQUIRED)

--log-file-path <log-file-path>

-v, --verbosity <verbosity>

数据集

--dataset | -d (字符串)

此参数为以下任一选项提供文件路径:

  • 答:整个数据集文件:如果使用此选项且用户未提供--test-dataset--validation-dataset,则交叉验证(k-fold 等)或自动数据拆分方法将在内部用于验证模型。 在这种情况下,用户只需提供数据集文件路径。

  • B:训练数据集文件: 如果用户还提供用于模型验证的数据集(使用 --test-dataset 和可选 --validation-dataset),则 --dataset 参数意味着仅具有“训练数据集”。 例如,使用 80% - 20% 方法来验证模型的质量并获取准确性指标时,“训练数据集”将具有 80 个数据%,而“测试数据集”的数据将有 20 个%。

测试数据集

--test-dataset | -t (字符串)

指向测试数据集文件的文件路径,例如,当使用80% - 20%方法进行常规验证以获取准确率指标时。

如果使用--test-dataset,那么也必须使用--dataset

--test-dataset参数是可选的,除非使用 --validation-dataset。 在这种情况下,用户必须使用三个参数。

验证数据集

--validation-dataset | -v (字符串)

指向验证数据集文件的文件路径。 在任何情况下,验证数据集都是可选的。

如果使用 a validation dataset,则行为应为:

  • test-dataset参数和--dataset参数也是必需的。

  • 数据集 validation-dataset 用于估计模型选择的预测错误。

  • 用于评估最终所选模型通用化误差的 test-dataset。 理想情况下,测试集应保存在“保管库”中,并且仅在数据分析结束时才显示。

基本上,使用 validation dataset 加号 test dataset时,验证阶段分为两部分:

  1. 在第一部分中,只需查看模型,并使用验证数据选择最佳性能方法(=validation)
  2. 然后估计所选方法(=test)的准确性。

因此,数据分离可以是 80/10/10 或 75/15/10。 例如:

  • training-dataset 文件应包含 75% 的% 数据。
  • validation-dataset 文件应具有 15 条% 类型的数据。
  • test-dataset 文件应包括 10 个% 的数据。

在任何情况下,这些百分比将由使用 CLI 的用户决定,后者将提供已拆分的文件。

标签列

--label-col (int 或 string)

使用此参数,可以使用数据集标题中设置的特定目标/目标列(要预测的变量)或数据集文件中列的数字索引(列索引值从 0 开始)来指定。

此参数用于 分类回归 问题。

项目列

--item-col (int 或 string)

项目列包含用户评分的项目列表(这些项目是推荐给用户的)。 可以使用数据集标题中设置的列名称或数据集文件中列的数字索引(列索引值从 0 开始)来指定此列。

此参数仅用于 建议 任务。

分级列

--rating-col (int 或 string)

分级列包含用户向项目提供的分级列表。 可以使用数据集标题中设置的列名称或数据集文件中列的数字索引(列索引值从 0 开始)来指定此列。

此参数仅用于 建议 任务。

用户字段

--user-col (int 或 string)

用户列包含为项目提供分级的用户列表。 可以使用数据集标题中设置的列名称或数据集文件中列的数字索引(列索引值从 0 开始)来指定此列。

此参数仅用于 建议 任务。

忽略列

--ignore-columns (字符串)

使用此参数,可以忽略数据集文件中的现有列,以便训练过程不会加载和使用它们。

指定要忽略的列名称。 使用“, ”(逗号加空格)或“ ”(空格)来分隔多个列名。 可以对包含空格的列名使用引号(例如,“已登录”)。

示例:

--ignore-columns email, address, id, logged_in

具有标头

--has-header (bool)

指定数据集文件是否具有标题行。 可能的值为:

  • true
  • false

如果用户未指定此参数,ML.NET CLI 将尝试检测此属性。

训练时间

--train-time (字符串)

默认情况下,最大探索或训练时间为 30 分钟。

此参数设置用于浏览多个训练程序和配置的过程的最大时间(以秒为单位)。 如果配置的时间限制太短(例如 2 秒),则单个迭代可能会超过该限制。 在这种情况下,实际时间为在单个迭代中生成一个模型配置所需的时间。

迭代所需的时间可能因数据集的大小而异。

缓存

--cache (字符串)

如果使用缓存,则会在内存中加载整个训练数据集。

对于中小型数据集,使用缓存可以显著提高训练性能,这意味着训练时间可能比不使用缓存的时间短。

但是,对于大型数据集,在内存中加载所有数据可能会产生负面影响,因为可能会内存不足。 使用大型数据集文件而不是缓存进行训练时,ML.NET 在训练时需要加载更多数据时,会从驱动器流式传输数据块。

可以指定以下值:

on:强制在训练时使用缓存。 off:强制在训练时不使用缓存。 auto:根据 AutoML 试探法,缓存可能会被使用或不被使用。 通常,如果您使用 auto 选项,小型/中型数据集将使用缓存,而大型数据集将不使用缓存。

如果未指定 --cache 参数,则默认情况下将使用缓存 auto 配置。

名称

--name (字符串)

所创建的输出项目或解决方案的名称。 如果未指定名称,则使用名称 sample-{mltask}

ML.NET 模型文件(.ZIP文件)也将获得相同的名称。

输出路径

--output | -o (字符串)

用于放置生成的输出的根位置/文件夹。 默认为当前目录。

详细程度

--verbosity | -v (字符串)

设置标准输出的详尽程度。

允许值包括:

  • q[uiet]
  • m[inimal] (默认情况下)
  • diag[nostic] (日志记录信息级别)

默认情况下,CLI 工具在工作时应显示一些基本反馈(minimal),例如说明它正在运行、如果可能的话显示剩余时间或已完成时间的百分比 %。

帮助

-h |--help

打印命令的帮助信息,包含对每个命令参数的说明。

另请参阅