{"id":96127,"date":"2023-09-22T08:47:31","date_gmt":"2023-09-22T06:47:31","guid":{"rendered":"https:\/\/code-maze.com\/?p=96127"},"modified":"2023-09-22T08:47:31","modified_gmt":"2023-09-22T06:47:31","slug":"csharp-using-ml-net-cli-to-automate-model-training","status":"publish","type":"post","link":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/","title":{"rendered":"Using ML.NET CLI To Automate Model Training"},"content":{"rendered":"<p>As we continue our article series about <a href=\"https:\/\/code-maze.com\/csharp-mlnet-machine-learning-introduction\/\" target=\"_blank\" rel=\"noopener\">ML.NET<\/a>, we will look at the ML.NET Command Line Interface (CLI) tool.\u00a0<\/p>\n<p>Like <a href=\"https:\/\/code-maze.com\/csharp-model-builder-ml-net\/\" target=\"_blank\" rel=\"noopener\">ML.NET Model Builder<\/a>, the ML.NET CLI uses <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/machine-learning\/concept-automated-ml?view=azureml-api-2\" target=\"_blank\" rel=\"nofollow noopener\">AutoML<\/a> to produce machine learning models.\u00a0<\/p>\n<div style=\"padding: 20px; border-left: 5px #dc2323 solid; display: block; margin-bottom: 20px; box-shadow: 1px 1px 5px 0px lightgrey;\">To download the source code for this article, you can visit our <a href=\"https:\/\/github.com\/CodeMazeBlog\/CodeMazeGuides\/tree\/main\/csharp-machine-learning\/ML.NET_CLI\" target=\"_blank\" rel=\"nofollow noopener\">GitHub repository<\/a>.<\/div>\n<p>Let&#8217;s dive in and see how we can use it to automate model generation.<\/p>\n<h2>What is the ML.NET CLI?<\/h2>\n<p><strong>The ML.NET CLI tool, as the name suggests, is the command line tool that allows us to develop the best possible machine learning model for a given dataset and selected scenario.<\/strong><\/p>\n<p>ML.NET is a .<a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/core\/tools\/global-tools\" target=\"_blank\" rel=\"nofollow noopener\">NET Core tool<\/a>, so it is available for Windows, macOS, and Linux.\u00a0<\/p>\n<p>For a given dataset provided as an input parameter, ML.NET CLI generates both an ML model and C# code to run and train the model.\u00a0<\/p>\n<p>The current ML.NET CLI version supports the following tasks:<\/p>\n<ul>\n<li>classification<\/li>\n<li>regression<\/li>\n<li>recommendation<\/li>\n<li>train<\/li>\n<li>image-classification<\/li>\n<li>text-classification<\/li>\n<li>forecasting<\/li>\n<\/ul>\n<h2>ML.NET CLI Installation<\/h2>\n<p>Before using the tool, we need to install it. It requires <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/download\" target=\"_blank\" rel=\"nofollow noopener\">.NET SDK<\/a> to be installed on the machine. To check and verify the installed version, let&#8217;s open the command line or a terminal and run the command:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">PM&gt; dotnet --version<\/code><\/p>\n<p>If it returns the version number, we are good to go. If it fails, we must install .NET SDK before installing the ML.NET CLI tool.<\/p>\n<p>The install command format is:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">dotnet tool install --global mlnet-&lt;OS&gt;-&lt;ARCH&gt;<\/code><\/p>\n<p>So, to install it on a 64-bit Windows, we run this command:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">PM&gt; dotnet tool install --global mlnet-win-x64<\/code><\/p>\n<p>Occasionally, the installation might return the following error:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">dotnet : Failed to create shell shim for tool 'mlnet-win-x64': Command 'mlnet' conflicts with an existing command from another tool.<\/code><\/p>\n<p>This indicates the older (obsolete) ML.NET CLI version is already installed on the system. Therefore, first, we need to uninstall it to be able to install the latest version. To uninstall the tool, run the command:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">PM&gt; dotnet tool uninstall --global mlnet<\/code><\/p>\n<p>Finally, we can repeat the install command to install the latest version on our system.<\/p>\n<h2>Using the ML.NET CLI<\/h2>\n<p>Now, we are ready to see the tool in action.<\/p>\n<p>Calling the tool without any parameters will give us the basic information about its usage and available commands:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">PM&gt; mlnet\r\nmlnet : Required command was not provided.\r\n\r\nmlnet\r\n\r\nUsage:\r\n  mlnet [options] [command]\r\n\r\nOptions:\r\n  --version &lt;version&gt;    Show version information.\r\n  -?, -h, --help &lt;help&gt;  Show help and usage information.\r\n\r\nCommands:\r\n  classification        Train a custom ML.NET model for classification...\r\n  regression            Train a custom ML.NET model for regression...\r\n  recommendation        Train a custom ML.NET model for recommendation...\r\n  train                 train using training config file\r\n  image-classification  Train a custom ML.NET model for image classification...\r\n  text-classification   Train a custom ML.NET model for text classification ...\r\n  forecasting           Train a custom ML.NET model for time series forecasting...<\/pre>\n<p>Let&#8217;s use it on our dataset. We will use the same <a href=\"https:\/\/www.kaggle.com\/datasets\/ppb00x\/credit-risk-customers\" target=\"_blank\" rel=\"nofollow noopener\">Credit Risk Customers<\/a> dataset as in the previous article.\u00a0<\/p>\n<p>Since we want to classify the credit submission, we&#8217;ll use the classification command.<\/p>\n<p>First of all, let&#8217;s see the available options by calling the tool with only the task name:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">PM&gt; mlnet classification\r\nmlnet : Option '--dataset' is required.\r\n\r\nOption '--label-col' is required.\r\n\r\nclassification\r\n  Train a custom ML.NET model for classification...\r\nUsage:\r\n  mlnet [options] classification\r\n\r\nOptions:\r\n  --dataset &lt;dataset&gt; (REQUIRED)             File path to single dataset or training dataset...\r\n  --label-col &lt;label-col&gt; (REQUIRED)         Name or zero-based index of label (target)...\r\n  --cache &lt;Auto|Off|On&gt;                      Specify [On|Off|Auto] for cache to be turned...\r\n  --cv-fold &lt;cv-fold&gt;                        Number of folds used for cross-validation...\r\n  --has-header                               Specify [true|false] depending if dataset file(s)...\r\n  --ignore-cols &lt;ignore-cols&gt;                Specify columns to be ignored in given dataset....\r\n  --log-file-path &lt;log-file-path&gt;            Path to log file.                             \r\n  --name &lt;name&gt;                              Name for output project or solution to create...\r\n  -o, --output &lt;output&gt;                      Location folder for generated output. Default...\r\n  --split-ratio &lt;split-ratio&gt;                Percent of dataset to use for validation...\r\n  --train-time &lt;train-time&gt;                  Maximum time in seconds for exploring models...\r\n  --validation-dataset &lt;validation-dataset&gt;  File path for validation dataset in train\/valid...\r\n  -v, --verbosity &lt;verbosity&gt;                Output verbosity choices: q[uiet], m[inimal]...\r\n\r\nRequired options: --dataset, --label-col<\/pre>\n<p>As we can see, the tool provides clear information about the usage and available and required options.<\/p>\n<p>In our example, we want to predict the value of the <em>class<\/em> column, and we want to set the training time to 10 seconds.<\/p>\n<p>Taking all this into consideration, we run the command:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">mlnet classification --dataset \"DataSets\/credit_customers.csv\" --label-col 20 --has-header true --train-time 10<\/code><\/p>\n<p>Since our dataset has headers, we can also use a column name for the label column:<\/p>\n<p><code class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\">mlnet classification --dataset \"DataSets\/credit_customers.csv\" --label-col \"class\" --has-header true --train-time 10<\/code><\/p>\n<p>As a result, we see the training process details and the location of the generated assets:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">Start Training\r\nstart multiclass classification\r\nEvaluate Metric: MacroAccuracy\r\nAvailable Trainers: LGBM,FASTFOREST,FASTTREE,LBFGS,SDCA\r\nTraining time in seconds: 10\r\n|      Trainer                             MacroAccuracy Duration    |\r\n|--------------------------------------------------------------------|\r\n|0     FastTreeOva                         0.5751     0.6000         |\r\n|1     FastTreeOva                         0.5854     0.2860         |\r\n|2     FastTreeOva                         0.6822     0.4950         |\r\n|3     FastForestOva                       0.6059     0.3550         |\r\n|4     FastTreeOva                         0.5826     0.5150         |\r\n|5     LightGbmMulti                       0.6465     0.1350         |\r\n|6     LightGbmMulti                       0.6483     0.1390         |\r\n|7     FastTreeOva                         0.6737     1.1230         |\r\n|8     FastTreeOva                         0.6380     0.4040         |\r\n|9     LightGbmMulti                       0.7010     0.1160         |\r\n[Source=AutoMLExperiment, Kind=Info] cancel training because cancellation token is invoked...\r\n|--------------------------------------------------------------------|\r\n|                          Experiment Results                        |\r\n|--------------------------------------------------------------------|\r\n|                               Summary                              |\r\n|--------------------------------------------------------------------|\r\n|ML Task: multiclass classification                                  |\r\n|Dataset: DataSets\\credit_customers.csv|\r\n|Label : class                                                       |\r\n|Total experiment time :     9.0000 Secs                             |\r\n|Total number of models explored: 11                                 |\r\n|--------------------------------------------------------------------|\r\n|                        Top 5 models explored                       |\r\n|--------------------------------------------------------------------|\r\n|      Trainer                             MacroAccuracy Duration    |\r\n|--------------------------------------------------------------------|\r\n|9     LightGbmMulti                       0.7010     0.1160         |\r\n|2     FastTreeOva                         0.6822     0.4950         |\r\n|7     FastTreeOva                         0.6737     1.1230         |\r\n|6     LightGbmMulti                       0.6483     0.1390         |\r\n|5     LightGbmMulti                       0.6465     0.1350         |\r\n|--------------------------------------------------------------------|\r\n[Source=AutoMLExperiment, Kind=Info] cancel training because cancellation token is invoked...\r\nsave SampleClassification.mbconfig to ML.NET_CLI\\SampleClassification\r\nGenerating a console project for the best pipeline at location : ML.NET_CLI\\SampleClassification<\/pre>\n<p>Among the generated files, we have the <code>SampleClassification.mbconfig<\/code> file:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\">{\r\n\t\"Scenario\": \"Classification\",\r\n\t\"DataSource\": {\r\n\t\t\"Type\": \"TabularFile\",\r\n\t\t\"Version\": 1,\r\n\t\t\"FilePath\": \"DataSets\\\\credit_customers.csv\",\r\n\t\t\"Delimiter\": \",\",\r\n\t\t\"DecimalMarker\": \".\",\r\n\t\t\"HasHeader\": true,\r\n\t\t\"ColumnProperties\": [...]\r\n\t},\r\n\t\"Environment\": {\r\n\t\t\"Type\": \"LocalCPU\",\r\n\t\t\"Version\": 1\r\n\t},\r\n\t...\r\n}<\/pre>\n<p>It is the same configuration file used in the <a href=\"https:\/\/code-maze.com\/csharp-model-builder-ml-net\/\" target=\"_blank\" rel=\"noopener\">ML.NET Model Builder tool<\/a>. You can check the entire file in <a href=\"https:\/\/github.com\/CodeMazeBlog\/CodeMazeGuides\/blob\/main\/csharp-machine-learning\/ML.NET_CLI\/ML.NET_CLI\/SampleClassification\/SampleClassification.mbconfig\" target=\"_blank\" rel=\"nofollow noopener\">our source code<\/a>.\u00a0<\/p>\n<h3>ML.NET CLI Integration<\/h3>\n<p>A common scenario where the ML.NET CLI tool comes in handy is integrating with different CI\/CD tools.<\/p>\n<p>For example, ML model development automation in Azure DevOps Pipeline:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"yaml\">trigger:\r\n- 'DataSets\/credit_customers.csv'\r\n\r\npool:\r\n  vmImage: 'windows-latest'\r\n\r\nsteps:\r\n- script: |\r\n    dotnet tool install --global mlnet-win-x64\r\n\r\n    $dataPath = 'DataSets\/credit_customers.csv'\r\n    $outputModelPath = 'CreditCustomerClassificationModel.zip'\r\n\r\n    mlnet classification --dataset $dataPath --label-col \"class\" --has-header true --train-time 10 --output $outputModelPath\r\n\r\n  displayName: 'Retrain Credit Customer Classification Model'\r\n<\/pre>\n<p>This script defines a pipeline to retrain the model when the <em>credit_customers.csv<\/em> file is changed.<\/p>\n<h2>Model Evaluation<\/h2>\n<p>The ML.NET CLI generates the &#8220;best model&#8221; based on the quality metrics. Depending on the task type, different metrics are used.<\/p>\n<p>The default metric in <strong>binary classification problems<\/strong> is <em>accuracy<\/em>.\u00a0 The usual metrics for <strong>multi-classification tasks<\/strong> are <em>Micro Accuracy<\/em>, which measures overall accuracy, and <em>Macro accuracy<\/em>, representing average accuracy at a class level. Finally, the default metric for the <strong>value prediction<\/strong> tasks\u00a0is <em>RSquared<\/em>, with values ranging from 0 to 1.<\/p>\n<p>Occasionally, there might be situations that require the usage of an additional metric. For details about the metrics available, please see the <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/machine-learning\/resources\/metrics#evaluation-metrics-for-regression-and-recommendation\" target=\"_blank\" rel=\"nofollow noopener\">official documentation<\/a> from Microsoft.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this article, we&#8217;ve explored the ML.NET CLI tool, which enables us to automate and optimize machine learning model development and generation. It provides a simple but clear way to generate different ML models from a given dataset through the command line interface or a script.<\/p>\n<p>In conclusion, ML.NET CLI is a useful tool for any developer or data scientist who needs to develop ML models in an easy and automated way.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As we continue our article series about ML.NET, we will look at the ML.NET Command Line Interface (CLI) tool.\u00a0 Like ML.NET Model Builder, the ML.NET CLI uses AutoML to produce machine learning models.\u00a0 Let&#8217;s dive in and see how we can use it to automate model generation. What is the ML.NET CLI? The ML.NET CLI [&hellip;]<\/p>\n","protected":false},"author":45,"featured_media":62189,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[12],"tags":[1775,1961,111,998,1772,1773],"class_list":["post-96127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","tag-ai","tag-azure-devops","tag-ci-cd","tag-cli","tag-machine-learning","tag-ml-net","et-has-post-format-content","et_post_format-et-post-format-standard"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using ML.NET CLI To Automate Model Training<\/title>\n<meta name=\"description\" content=\"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using ML.NET CLI To Automate Model Training\" \/>\n<meta property=\"og:description\" content=\"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\" \/>\n<meta property=\"og:site_name\" content=\"Code Maze\" \/>\n<meta property=\"article:published_time\" content=\"2023-09-22T06:47:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"620\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ivan Matec\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodeMazeBlog\" \/>\n<meta name=\"twitter:site\" content=\"@CodeMazeBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ivan Matec\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\"},\"author\":{\"name\":\"Ivan Matec\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/b35a6aa43a1c4795fd77e2519adfd664\"},\"headline\":\"Using ML.NET CLI To Automate Model Training\",\"datePublished\":\"2023-09-22T06:47:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\"},\"wordCount\":742,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"keywords\":[\"AI\",\"Azure DevOps\",\"CI\/CD\",\"CLI\",\"machine learning\",\"ml.net\"],\"articleSection\":[\"C#\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\",\"url\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\",\"name\":\"Using ML.NET CLI To Automate Model Training\",\"isPartOf\":{\"@id\":\"https:\/\/code-maze.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"datePublished\":\"2023-09-22T06:47:31+00:00\",\"description\":\"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.\",\"breadcrumb\":{\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png\",\"width\":1100,\"height\":620,\"caption\":\"C# Development\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/code-maze.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using ML.NET CLI To Automate Model Training\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/code-maze.com\/#website\",\"url\":\"https:\/\/code-maze.com\/\",\"name\":\"Code Maze\",\"description\":\"Learn. Code. Succeed.\",\"publisher\":{\"@id\":\"https:\/\/code-maze.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/code-maze.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/code-maze.com\/#organization\",\"name\":\"Code Maze\",\"url\":\"https:\/\/code-maze.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png\",\"width\":3511,\"height\":3510,\"caption\":\"Code Maze\"},\"image\":{\"@id\":\"https:\/\/code-maze.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/CodeMazeBlog\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/b35a6aa43a1c4795fd77e2519adfd664\",\"name\":\"Ivan Matec\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/code-maze.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/ivan-400x400-1-150x150.png\",\"contentUrl\":\"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/ivan-400x400-1-150x150.png\",\"caption\":\"Ivan Matec\"},\"description\":\"Ivan has over twelve years of experience developing .NET and web applications. His experience includes developing several web-based solutions for medical institutions. Other projects include developing customized CRM and ERP solutions. Besides his every-day job, he enjoys experimenting with advanced software solutions (Microsoft Azure).\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/ivan-matec\/\"],\"url\":\"https:\/\/code-maze.com\/author\/tecmaivan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using ML.NET CLI To Automate Model Training","description":"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/","og_locale":"en_US","og_type":"article","og_title":"Using ML.NET CLI To Automate Model Training","og_description":"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.","og_url":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/","og_site_name":"Code Maze","article_published_time":"2023-09-22T06:47:31+00:00","og_image":[{"width":1100,"height":620,"url":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","type":"image\/png"}],"author":"Ivan Matec","twitter_card":"summary_large_image","twitter_creator":"@CodeMazeBlog","twitter_site":"@CodeMazeBlog","twitter_misc":{"Written by":"Ivan Matec","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#article","isPartOf":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/"},"author":{"name":"Ivan Matec","@id":"https:\/\/code-maze.com\/#\/schema\/person\/b35a6aa43a1c4795fd77e2519adfd664"},"headline":"Using ML.NET CLI To Automate Model Training","datePublished":"2023-09-22T06:47:31+00:00","mainEntityOfPage":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/"},"wordCount":742,"commentCount":0,"publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"image":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","keywords":["AI","Azure DevOps","CI\/CD","CLI","machine learning","ml.net"],"articleSection":["C#"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/","url":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/","name":"Using ML.NET CLI To Automate Model Training","isPartOf":{"@id":"https:\/\/code-maze.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage"},"image":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage"},"thumbnailUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","datePublished":"2023-09-22T06:47:31+00:00","description":"Discover the power of ML.NET CLI, the command-line tool that streamlines machine learning model development.","breadcrumb":{"@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#primaryimage","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2021\/12\/social-csharp.png","width":1100,"height":620,"caption":"C# Development"},{"@type":"BreadcrumbList","@id":"https:\/\/code-maze.com\/csharp-using-ml-net-cli-to-automate-model-training\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/code-maze.com\/"},{"@type":"ListItem","position":2,"name":"Using ML.NET CLI To Automate Model Training"}]},{"@type":"WebSite","@id":"https:\/\/code-maze.com\/#website","url":"https:\/\/code-maze.com\/","name":"Code Maze","description":"Learn. Code. Succeed.","publisher":{"@id":"https:\/\/code-maze.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/code-maze.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/code-maze.com\/#organization","name":"Code Maze","url":"https:\/\/code-maze.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2020\/01\/Code-Maze-Only-Logo-Transparent-HRez.png","width":3511,"height":3510,"caption":"Code Maze"},"image":{"@id":"https:\/\/code-maze.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/CodeMazeBlog"]},{"@type":"Person","@id":"https:\/\/code-maze.com\/#\/schema\/person\/b35a6aa43a1c4795fd77e2519adfd664","name":"Ivan Matec","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/code-maze.com\/#\/schema\/person\/image\/","url":"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/ivan-400x400-1-150x150.png","contentUrl":"https:\/\/code-maze.com\/wp-content\/uploads\/2023\/12\/ivan-400x400-1-150x150.png","caption":"Ivan Matec"},"description":"Ivan has over twelve years of experience developing .NET and web applications. His experience includes developing several web-based solutions for medical institutions. Other projects include developing customized CRM and ERP solutions. Besides his every-day job, he enjoys experimenting with advanced software solutions (Microsoft Azure).","sameAs":["https:\/\/www.linkedin.com\/in\/ivan-matec\/"],"url":"https:\/\/code-maze.com\/author\/tecmaivan\/"}]}},"_links":{"self":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/96127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/users\/45"}],"replies":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/comments?post=96127"}],"version-history":[{"count":5,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/96127\/revisions"}],"predecessor-version":[{"id":96142,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/posts\/96127\/revisions\/96142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media\/62189"}],"wp:attachment":[{"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/media?parent=96127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/categories?post=96127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/code-maze.com\/wp-json\/wp\/v2\/tags?post=96127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}