命令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 核心 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
将基于模型生成器生成的“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
时,验证阶段分为两部分:
- 在第一部分中,只需查看模型,并使用验证数据选择最佳性能方法(=validation)
- 然后估计所选方法(=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
打印命令的帮助信息,包含对每个命令参数的说明。