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 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 工作命令 (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 會根據從 Model Builder 產生的 "mbconfig" 檔案來定型模型。 若要讓此命令運作,定型資料必須位於與 "mbconfig" 檔案相同的目錄中。

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

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

-v, --verbosity <verbosity>

資料集

--dataset | -d (string)

這個引數提供下列任一選項的檔案路徑:

  • A:整個資料集檔案:如果使用這個選項且使用者沒有提供 --test-dataset--validation-dataset,則會在內部使用交叉驗證 (k-fold 等) 或自動資料分割方法來驗證模型。 在此情況下,使用者只需提供資料集檔案路徑。

  • B:定型資料集檔案如果使用者同時提供用於模型驗證的資料集 (使用 --test-dataset 和選擇性 --validation-dataset),則 --dataset 引數表示只會有「定型資料集」。 例如,使用 80% - 20% 方法來驗證模型的品質並取得準確度計量時,「定型資料集」會有 80% 的資料,而「測試資料集」會有 20% 的資料。

測試資料集

--test-dataset | -t (string)

指向測試資料集檔案的檔案路徑,例如使用 80% - 20% 方法進行一般驗證來取得準確度計量時。

如果使用 --test-dataset,則也需要 --dataset

除非使用 --validation-dataset,否則 --test-dataset 引數是選擇性的。 在此情況下,使用者必須使用三個引數。

驗證資料集

--validation-dataset | -v (string)

指向驗證資料集檔案的檔案路徑。 在任何情況下,驗證資料集都是選擇性的。

如果使用 validation dataset,行為應該如下:

  • 也需要 test-dataset--dataset 引數。

  • validation-dataset 資料集是用於評估模型選取的預測誤差。

  • test-dataset 資料集是用於評定最終選擇模型的概括誤差。 在理想情況下,測試集應該保留在「保存庫」中,且只會在資料分析結束時提出。

基本上,使用 validation dataset 加上 test dataset 時,驗證階段可分成兩個部分:

  1. 在第一個部分中,您只會使用驗證資料來查看模型並選取表現最佳的方法 (=驗證)
  2. 然後,您會評估所選方法的準確度 (=測試)。

因此,資料可分成 80/10/10 或 75/15/10。 例如:

  • training-dataset 檔案應該有 75% 的資料。
  • validation-dataset 檔案應該有 15% 的資料。
  • test-dataset 檔案應該有 10% 的資料。

在任何情況下,這些百分比都會由提供已分割檔案的使用者使用 CLI 來決定。

標籤資料行

--label-col (整數或字串)

透過這個引數,您可以藉由使用資料集檔案中資料集標頭或資料行數值索引中的資料行名稱集 (資料行索引值以 0 起始),來指定特定目標/目的資料行 (您想要預測的變數)。

這個引數可用於分類迴歸問題。

項目資料行

--item-col (整數或字串)

項目資料行具有使用者評等的項目清單 (對使用者建議的項目)。 您可以使用資料集檔案中資料集標頭或資料行數值索引中的資料行名稱集 (資料行索引值以 0 起始),指定此資料行。

這個引數僅用於建議工作。

評等資料行

--rating-col (整數或字串)

評等資料行具有使用者對於項目的評等清單。 您可以使用資料集檔案中資料集標頭或資料行數值索引中的資料行名稱集 (資料行索引值以 0 起始),指定此資料行。

這個引數僅用於建議工作。

使用者資料行

--user-col (整數或字串)

使用者資料行具有對項目進行評等的使用者清單。 您可以使用資料集檔案中資料集標頭或資料行數值索引中的資料行名稱集 (資料行索引值以 0 起始),指定此資料行。

這個引數僅用於建議工作。

忽略資料行

--ignore-columns (string)

透過這個引數,您可以忽略資料集檔案中的現有資料行,讓定型程序不會載入和使用這些資料行。

指定您要忽略的資料行名稱。 使用 ', ' (逗號與空格) 或 ' ' (空格) 來分隔多個資料行名稱。 您可以使用引號來括住含有空格的資料行名稱 (例如 "logged in")。

範例:

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

具有標頭

--has-header (bool)

指定資料集檔案是否有標頭資料列。 可能的值包括:

  • true
  • false

如果使用者未指定這個引數,ML.NET CLI 會嘗試偵測這個屬性。

定型時間

--train-time (string)

根據預設,最大探索/定型時間為 30 分鐘。

這個引數為用於探索多個定型器和設定的程序,設定最大時間 (以秒為單位)。 如果為單一反覆運算所提供的時間太短 (例如 2 秒),則可能會超過設定的時間。 在此情況下,實際時間是在單一反覆運算中產生一個模型設定所需的時間。

反覆運算所需的時間可能會因資料集大小而有所不同。

Cache

--cache (string)

如果您使用快取,則會將整個定型資料集載入記憶體。

若是小型和中型資料集,使用快取可大幅提升定型效能,這表示定型時間可能會比不使用快取更短。

不過,若是大型資料集,將所有資料載入記憶體可能會造成負面影響,因為記憶體可能會不足。 以大型資料集檔案定型而不使用快取時,ML.NET 會在需要載入更多資料進行定型時從磁碟機串流資料區塊。

您可以指定下列值:

on:強制在定型時使用快取。 off:強制在定型時不使用快取。 auto:快取使用與否會視 AutoML 啟發學習法而定。 通常,如果您使用 auto 選項,則小型/中型資料集會使用快取,而大型資料集不會使用快取。

如果您沒有指定 --cache 參數,則預設會使用 auto 快取設定。

名稱

--name (string)

所建立輸出專案或方案的名稱。 如果未指定名稱,則會使用名稱 sample-{mltask}

ML.NET 模型檔案 (.ZIP 檔案) 也會有相同的名稱。

輸出路徑

--output | -o (string)

放置所產生輸出的根位置/資料集。 預設值是目前的目錄。

詳細資訊

--verbosity | -v (string)

設定標準輸出的詳細資訊層級。

允許的值如下:

  • q[uiet]
  • m[inimal] (預設)
  • diag[nostic] (記錄資訊層級)

根據預設,CLI 工具在運作時應該至少會顯示一些基本回饋 (minimal),例如提及其正在運作,以及剩餘時間或完成的時間百分比 (如果可能)。

說明

-h |--help

印出命令的說明,以及每個命令的參數描述。

另請參閱