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、 regressionrecommendation、 和 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、 、regressionrecommendationforecasting 、 和 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, etc.) 或自動化數據分割方法來驗證模型。 在此情況下,使用者只需要提供數據集檔案路徑。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 (字串)
指向驗證數據集檔案的檔案路徑。 在任何情況下,驗證數據集都是選擇性的。
如果使用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 (布林)
指定資料集檔案是否有標頭數據列。 可能的值為:
truefalse
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
顯示命令的幫助,其中包含每個命令參數的描述。
另請參閱
- 如何安裝 ML.NET CLI 工具
- ML.NET CLI 概觀
- 教學課程:使用 ML.NET CLI 分析情感
- ML.NET CLI 中的 遙測