ML.NET CLI 命令参考
classification
、regression
和 recommendation
命令是 ML.NET CLI 工具提供的主要命令。 这些命令允许使用自动化机器学习 (AutoML) 以及用于运行模型/对模型评分的示例 C# 代码生成用于分类、回归和建议模型的高质量 ML.NET 模型。 此外,还会生成用于训练模型的 C# 代码,以便你可以研究模型的算法和设置。
注意
本文涉及目前处于预览状态的 ML.NET CLI 和 ML.NET AutoML,且材料可能会有所变化。
概述
示例用法:
mlnet regression --dataset "cars.csv" --label-col price
mlnet
ML 任务命令(classification
、regression
、recommendation
和 forecasting
)生成以下资产:
- 可供使用的序列化模型 .zip 文件(“最佳模型”)。
- 用于运行生成的模型和对其进行评分的 C# 代码。
- 包含用于生成该模型的训练代码的 C# 代码。
前两个资产可以直接用于最终用户应用(ASP.NET Core 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 任务命令(classification
、regression
、recommendation
、forecasting
和 train
)基于提供的数据集和 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
将根据 Model Builder 生成的“mbconfig”文件训练模型。 若要使此命令正常运行,训练数据必须与“mbconfig”文件位于同一目录。
-training-config <training-config> (REQUIRED)
--log-file-path <log-file-path>
-v, --verbosity <verbosity>
数据集
--dataset | -d
(字符串)
此参数向以下任一选项提供文件路径:
A:整个数据集文件: 如果使用此选项且用户未提供
--test-dataset
和--validation-dataset
,则将在内部使用交叉验证(K 折等)或自动数据拆分方法来验证模型。 在这种情况下,用户将只需要提供数据集文件路径。B:训练数据集文件: 如果用户还提供用于模型验证的数据集(使用
--test-dataset
和可选的--validation-dataset
),则--dataset
参数意味着仅拥有“训练数据集”。 例如,当使用 80%-20% 方法来验证模型的质量以及获取准确性指标时,“训练数据集”将拥有 80% 的数据,而“测试数据集”将拥有 20% 的数据。
测试数据集
--test-dataset | -t
(字符串)
指向测试数据集文件的文件路径,例如,在进行常规验证以获取准确性指标时使用 80%-20% 方法的情况。
如果使用 --test-dataset
,则还需要 --dataset
。
除非使用 --validation-dataset,否则 --test-dataset
参数是可选的。 在这种情况下,用户必须使用三个参数。
验证数据集
--validation-dataset | -v
(字符串)
指向验证数据集文件的文件路径。 验证数据集在任何情况下都是可选的。
如果使用 validation dataset
,则行为应为:
test-dataset
和--dataset
参数也是必需的。validation-dataset
数据集用于估算模型选择的预测误差。test-dataset
用于评估最终选定模型的泛化误差。 理想情况下,测试集应保存在“保管库”中,并仅在数据分析结束时显示。
一般来说,使用 validation dataset
以及 test dataset
时,验证阶段拆分为两部分:
- 在第一部分中,只需查看模型并使用验证数据选择性能最佳的方法即可(= 验证)
- 然后,估算选定方法的准确性(= 测试)。
因此,数据分离可以是 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
(字符串)
借助此参数,可以忽略数据集文件中的现有列,这样一来,训练过程便不会加载和使用它们。
指定想要忽略的列名。 使用“, ”(逗号加空格)或“ ”(空格)分隔多个列名。 可以对包含空格的列名使用引号(例如,“logged in”)。
示例:
--ignore-columns email, address, id, logged_in
具有标头
--has-header
(布尔值)
指定数据集文件是否拥有标头行。 可能的值有:
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
打印命令帮助,其中包含对每个命令的参数的描述。