{"id":22989,"date":"2019-05-06T11:51:26","date_gmt":"2019-05-06T18:51:26","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/dotnet\/?p=22989"},"modified":"2021-09-29T12:16:48","modified_gmt":"2021-09-29T19:16:48","slug":"announcing-ml-net-1-0","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-ml-net-1-0\/","title":{"rendered":"Announcing ML.NET 1.0"},"content":{"rendered":"<p><!-- Place this tag in your head or just before your close body tag. -->\n<script async defer src=\"https:\/\/buttons.github.io\/buttons.js\"><\/script><\/p>\n<p>We are excited to announce the release of <a href=\"http:\/\/dot.net\/ml\"><u>ML.NET 1.0<\/u> <\/a>today.\u00a0 <a href=\"http:\/\/dot.net\/ml\">ML.NET<\/a> is a free, cross-platform and open source\u00a0machine learning framework designed to bring the power of machine learning (ML) into .NET applications.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/05\/mlnet10-1.png\" alt=\"ML.NET Logo\" width=\"960\" height=\"504\" border=\"2\" \/><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><a href=\"https:\/\/github.com\/dotnet\/machinelearning\">https:\/\/github.com\/dotnet\/machinelearning\u00a0<\/a><a class=\"github-button\" href=\"https:\/\/github.com\/dotnet\/machinelearning\" aria-label=\"Star dotnet\/machinelearning on GitHub\" data-size=\"large\" data-show-count=\"true\">Star<\/a><\/span><\/p>\n<p style=\"text-align: center;\">Get Started @ <a href=\"http:\/\/dot.net\/ml\">http:\/\/dot.net\/ml<\/a><\/p>\n<p>ML.NET allows you to train, build and ship custom machine learning models using C# or F# for scenarios such as sentiment analysis, issue classification,\u00a0forecasting, recommendations and more. \u00a0You can\u00a0check out these common scenarios and tasks at our\u00a0<a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">ML.NET samples repo<\/a>.<\/p>\n<p>ML.NET was originally developed within Microsoft Research, and evolved into a significant framework used by many Microsoft products such as\u00a0Windows Defender, Microsoft Office (Powerpoint design ideas, Excel Chart recommendations), Azure Machine Learning, PowerBI key influencers to name a few!<\/p>\n<p>Since its launch ML.NET is being used by many organizations like <a href=\"https:\/\/dotnet.microsoft.com\/apps\/machinelearning-ai\/ml-dotnet\/customers\/sig-parser\">SigParser (Spam Email Detection),<\/a> \u00a0<a href=\"https:\/\/dotnet.microsoft.com\/apps\/machinelearning-ai\/ml-dotnet\/customers\/williams-mullen\">William Mullens (Legal Issue Classification)<\/a> and <a href=\"https:\/\/dotnet.microsoft.com\/apps\/machinelearning-ai\/ml-dotnet\/customers\/evolution-software\">Evolution Software (Moisture Level Detection for Hazelnuts)<\/a>. You can follow the journey of these and many other organisations using ML.NET at our <a href=\"https:\/\/dotnet.microsoft.com\/apps\/machinelearning-ai\/ml-dotnet\/customers\">ML.NET customer showcase<\/a>.\u00a0 These users tell us that the ease of use of ML.NET, ability to reuse their .NET skills and keeping their tech stack entirely in .NET are primary drivers for their use of ML.NET.<\/p>\n<p>Along with the ML.NET 1.0 release we are also adding new preview features like the power of Automated machine learning (AutoML) and new tools like ML.NET CLI and ML.NET Model Builder which means adding machine learning models to your applications is now only a right click away!<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/05\/rightclick.gif\" alt=\"ML.NET Logo\" width=\"960\" height=\"504\" border=\"2\" \/>\nThe remainder of this post focuses on these new experiences.<\/p>\n<ul>\n<li><a href=\"#corecomponents\">ML.NET Core Components<\/a><\/li>\n<li><a href=\"#automl\">Automated Machine Learning Preview<\/a><\/li>\n<li><a href=\"#modelbuilder\">ML.NET Model Builder Preview<\/a><\/li>\n<li><a href=\"#mlnetcli\">ML.NET CLI Preview<\/a><\/li>\n<li><a href=\"#getstarted\">Getting Started with ML.NET<\/a><\/li>\n<li><a href=\"#nextsteps\">Road Ahead<\/a><\/li>\n<li><a href=\"#youbuiltit\">You helped build it<\/a><\/li>\n<\/ul>\n<h3><a id=\"corecomponents\"><\/a>ML.NET Core Components<\/h3>\n<p>ML.NET is aimed at providing the end-end workflow for consuming ML into .NET apps across various steps of machine learning (pre-processing, feature engineering, modeling, evaluation and operationalization). ML.NET 1.0 provides the following key components:<\/p>\n<ul>\n<li>Data Representation\n<ul>\n<li>Fundamental ML data pipeline data-types such as <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/microsoft.ml.idataview?view=ml-dotnet\">IDataView<\/a> \u2013 the fundamental data pipeline type<\/li>\n<li>Readers to support reading data from delimited text files or IEnumerable of objects<\/li>\n<\/ul>\n<\/li>\n<li>Support for machine learning tasks:\n<ul>\n<li>Binary Classification<\/li>\n<li>Multi-Class classification<\/li>\n<li>Regression<\/li>\n<li>Ranking<\/li>\n<li>Anomaly Detection<\/li>\n<li>Clustering<\/li>\n<li>Recommendation (preview)<\/li>\n<\/ul>\n<\/li>\n<li>Data Transformation and featurization\n<ul>\n<li>Text<\/li>\n<li>Categories<\/li>\n<li>Feature Selection<\/li>\n<li>Normalization and missing value handling<\/li>\n<li>Image featurization<\/li>\n<li>Time Series (preview)<\/li>\n<li>Support for ONNX and TensorFlow model integration (preview)<\/li>\n<\/ul>\n<\/li>\n<li>Other\n<ul>\n<li>Model understanding and explainability<\/li>\n<li>User-defined custom transformations<\/li>\n<li>Schema operations<\/li>\n<li>Support for dataset manipulation and cross-validation<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><a id=\"automl\"><\/a>Automated Machine Learning Preview<\/h3>\n<p>Getting started with machine learning today involves a steep learning curve. \u00a0When building custom machine learning models, you have to figure out which machine learning task to pick for your scenario (i.e. classification or regression?), transform your data into a format that ML algorithms can understand (e.g. textual data -&gt; numeric vectors), and fine tune these ML algorithms to provide best performance. If you are new to ML each of these steps can be quite daunting!<\/p>\n<p>Automated Machine Learning makes your journey with ML simpler by automatically figuring out how to transform your input data and selecting the best performing ML algorithm with the right settings allowing you to build best-in-class custom ML models easily.<\/p>\n<p>AutoML support in ML.NET is in preview and we currently support Regression (used for scenarios like Price Prediction) and Classification (used for scenarios like Sentiment Analysis, Document Classification, Spam Detection etc.) ML tasks.<\/p>\n<p>You can try out the AutoML experience in ML.NET in three form factors using ML.NET Model Builder, ML.NET CLI or by using the AutoML API directly <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples#cli-samples-preview-state\">(samples can be found here<\/a>).<\/p>\n<p>For users who are new to Machine Learning we recommend starting with the ML.NET Model Builder in Visual Studio and the ML.NET CLI on any platform.\u00a0 The AutoML API is also very handy for scenarios where you want to build\u00a0models on the fly.<\/p>\n<h3><a id=\"modelbuilder\"><\/a>Model Builder Preview<\/h3>\n<p>In order to simplify the journey of .NET developers to build ML Models, we are today also excited to announce ML.NET Model Builder. With ML.NET Model builder adding machine learning to your apps is only a right-click away!<\/p>\n<p>Model Builder is a simple UI tool for developers which uses AutoML to build best in class ML models using the dataset you provide. In addition to this, Model Builder also generates model training and model consumption code for the best performing model allowing you to quickly add ML to your existing application.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/05\/model-builder-vs.png\" alt=\"ML.NET Model Builder\" width=\"985\" height=\"460\" border=\"2\" \/><\/p>\n<p><a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=MLNET.07\">Learn more about the ML.NET Model Builder<\/a><\/p>\n<p>Model Builder is currently in preview and we would love for you to try it out and tell us what you think!<\/p>\n<h3><a id=\"mlnetcli\"><\/a>ML.NET CLI Preview<\/h3>\n<p>The ML.NET CLI (command-line interface) is another new tool we are introducing today!<\/p>\n<p>ML.NET CLI is a dotnet tool which allows for generating ML.NET Models using AutoML and ML.NET. The ML.NET CLI quickly iterates through your dataset for a specific ML Task (currently supports regression and classification) and produces the best model.<\/p>\n<p>The CLI in addition to producing the best model also allows users to generate model training and model consumption code for the best performing model.<\/p>\n<p>ML.NET CLI is cross-platform and is an easy add-on to the .NET CLI. The Model Builder Visual Studio extension also uses ML.NET CLI to provide model builder capabilities.<\/p>\n<p>You can install the ML.NET CLI through this command.<\/p>\n<pre> dotnet tool install -g mlnet<\/pre>\n<p>Following picture shows the ML.NET CLI building a sentiment analysis dataset.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/dotnet\/wp-content\/uploads\/sites\/10\/2019\/05\/model-builder-cli.gif\" alt=\"ML.NET CLI\" width=\"1252\" height=\"585\" border=\"2\" \/><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/automate-training-with-cli\">Learn more about the ML.NET CLI<\/a><\/p>\n<p>ML.NET CLI is also currently in preview and we would love for you to try it out and share your thoughts below!<\/p>\n<h3><a id=\"getstarted\"><\/a>Get Started!<\/h3>\n<p>If you haven\u2019t already, getting started with ML.NET is easy and you can do so in a few simple steps as shown below. The example below <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/tree\/master\/samples\/csharp\/getting-started\/BinaryClassification_SentimentAnalysis\">shows how you can perform sentiment analysis with ML.NET<\/a>.<\/p>\n<pre class=\"\">\/\/Step 1. Create a ML Context\r\nvar ctx = new MLContext();\r\n\r\n\/\/Step 2. Read in the input data for model training\r\nIDataView dataReader = ctx.Data\r\n    .LoadFromTextFile<MyInput>(dataPath, hasHeader: true);\r\n\r\n\/\/Step 3. Build your estimator\r\nIEstimator&lt;ITransformer&gt; est = ctx.Transforms.Text\r\n    .FeaturizeText(\"Features\", nameof(SentimentIssue.Text))\r\n    .Append(ctx.BinaryClassification.Trainers\r\n        .LbfgsLogisticRegression(\"Label\", \"Features\"));\r\n\r\n\/\/Step 4. Train your Model\r\nITransformer trainedModel = est.Fit(dataReader);\r\n\r\n\/\/Step 5. Make predictions using your model\r\nvar predictionEngine = ctx.Model\r\n    .CreatePredictionEngine&lt;MyInput, MyOutput&gt;(trainedModel);\r\n\r\nvar sampleStatement = new MyInput { Text = \"This is a horrible movie\" };\r\n\r\nvar prediction = predictionEngine.Predict(sampleStatement);\r\n<\/pre>\n<p>You can also explore various other learning resources like <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">tutorials and resources for ML.NET along with ML.NET samples<\/a> demonstrating popular scenarios like product recommendation, anomaly detection and more in action.<\/p>\n<h3><a id=\"nextsteps\"><\/a>What\u2019s next with ML.NET<\/h3>\n<p>While we are very excited to release ML.NET 1.0 today, the team is already hard at work towards enabling the following features for ML.NET release post 1.0.<\/p>\n<ul>\n<li>AutoML experience for additional ML scenarios<\/li>\n<li>Improved support for deep learning scenarios<\/li>\n<li>Support for other additional sources like SQL Server, CosmosDB, Azure Blob storage and more.<\/li>\n<li>Scale-out on Azure for model training and consumption<\/li>\n<li>Support for additional ML scenarios and features when using Model Builder and CLI<\/li>\n<li>Native integration for machine learning at scale with .NET for Apache Spark and ML.NET<\/li>\n<li>New ML Types in .NET e.g. DataFrame<\/li>\n<\/ul>\n<h3><a id=\"youbuiltit\"><\/a>You helped build it<\/h3>\n<p>A special callout to these amazing contributors who have been with us on this journey for making machine learning accessible to .NET developers with ML.NET.<\/p>\n<p><a href=\"https:\/\/github.com\/amiteshenoy\">amiteshenoy<\/a>,\u00a0<a href=\"https:\/\/github.com\/beneyal\">beneyal<\/a>,\u00a0<a href=\"https:\/\/github.com\/bojanmisic\">bojanmisic<\/a>,\u00a0<a href=\"https:\/\/github.com\/Caraul\">Caraul<\/a>,\u00a0<a href=\"https:\/\/github.com\/dan-drews\">dan-drews<\/a>,\u00a0<a href=\"https:\/\/github.com\/DAXaholic\">DAXaholic<\/a>,\u00a0<a href=\"https:\/\/github.com\/dhilmathy\">dhilmathy<\/a>,\u00a0<a href=\"https:\/\/github.com\/dzban2137\">dzban2137<\/a>,\u00a0<a href=\"https:\/\/github.com\/elbruno\">elbruno<\/a>,\u00a0<a href=\"https:\/\/github.com\/endintiers\">endintiers<\/a>,\u00a0<a href=\"https:\/\/github.com\/f1x3d\">f1x3d<\/a>,<a href=\"https:\/\/github.com\/feiyun0112\">feiyun0112<\/a>,\u00a0<a href=\"https:\/\/github.com\/forki\">forki<\/a>,\u00a0<a href=\"https:\/\/github.com\/harshsaver\">harshsaver<\/a>,\n<a href=\"https:\/\/github.com\/helloguo\">helloguo<\/a>,\u00a0<a href=\"https:\/\/github.com\/hvitved\">hvitved<\/a>,\u00a0<a href=\"https:\/\/github.com\/Jongkeun\">Jongkeun<\/a>,\u00a0<a href=\"https:\/\/github.com\/JorgeAndd\">JorgeAndd<\/a>,\u00a0<a href=\"https:\/\/github.com\/JoshuaLight\">JoshuaLight<\/a>,\u00a0<a href=\"https:\/\/github.com\/jwood803\">jwood803<\/a>,\u00a0<a href=\"https:\/\/github.com\/kant2002\">kant2002<\/a>,\u00a0<a href=\"https:\/\/github.com\/kilick\">kilick<\/a>,\u00a0<a href=\"https:\/\/github.com\/Ky7m\">Ky7m<\/a>,<a href=\"https:\/\/github.com\/llRandom\">llRandom<\/a>,\u00a0<a href=\"https:\/\/github.com\/malik97160\">malik97160<\/a>,\u00a0<a href=\"https:\/\/github.com\/MarcinJuraszek\">MarcinJuraszek<\/a>,\u00a0<a href=\"https:\/\/github.com\/mareklinka\">mareklinka<\/a>,\n<a href=\"https:\/\/github.com\/Matei13\">Matei13<\/a>,\u00a0<a href=\"https:\/\/github.com\/mfaticaearnin\">mfaticaearnin<\/a>,\u00a0<a href=\"https:\/\/github.com\/mnboos\">mnboos<\/a>,\u00a0<a href=\"https:\/\/github.com\/nandaleite\">nandaleite<\/a>,\u00a0<a href=\"https:\/\/github.com\/Nepomuceno\">Nepomuceno<\/a>\u00a0<a href=\"https:\/\/github.com\/nihitb06\">nihitb06<\/a>,<a href=\"https:\/\/github.com\/Niladri24dutta\">Niladri24dutta<\/a>,\u00a0<a href=\"https:\/\/github.com\/PaulTFreedman\">PaulTFreedman<\/a>,\u00a0<a href=\"https:\/\/github.com\/Pielgrin\">Pielgrin<\/a>,\u00a0<a href=\"https:\/\/github.com\/pkulikov\">pkulikov<\/a>,\u00a0<a href=\"https:\/\/github.com\/Potapy4\">Potapy4<\/a>,\u00a0<a href=\"https:\/\/github.com\/Racing5372\">Racing5372<\/a>,\n<a href=\"https:\/\/github.com\/rantri\">rantri<\/a>,\u00a0<a href=\"https:\/\/github.com\/rantri\">rantri<\/a>,\u00a0<a href=\"https:\/\/github.com\/rauhs\">rauhs<\/a>,\u00a0<a href=\"https:\/\/github.com\/robosek\">robosek<\/a>,\u00a0<a href=\"https:\/\/github.com\/ross-p-smith\">ross-p-smith<\/a>,\u00a0<a href=\"https:\/\/github.com\/SolyarA\">SolyarA<\/a>,<a href=\"https:\/\/github.com\/Sorrien\">Sorrien<\/a>,\u00a0<a href=\"https:\/\/github.com\/suhailsinghbains\">suhailsinghbains<\/a>,\u00a0<a href=\"https:\/\/github.com\/terop\">terop<\/a>,\u00a0<a href=\"https:\/\/github.com\/ThePiranha\">ThePiranha<\/a>,\u00a0<a href=\"https:\/\/github.com\/Thomas-S-B\">Thomas-S-B<\/a>,\u00a0<a href=\"https:\/\/github.com\/timitoc\">timitoc<\/a>,\u00a0<a href=\"https:\/\/github.com\/tincann\">tincann<\/a>,\u00a0<a href=\"https:\/\/github.com\/v-tsymbalistyi\">v-tsymbalistyi<\/a>,\n<a href=\"https:\/\/github.com\/van-tienhoang\">van-tienhoang<\/a>,\u00a0<a href=\"https:\/\/github.com\/veikkoeeva\">veikkoeeva<\/a>,and <a href=\"https:\/\/github.com\/yamachu\">yamachu<\/a><\/p>\n<p>If you haven\u2019t already, give <a href=\"http:\/\/dot.net\/ml\">ML.NET a try!<\/a><\/p>\n<p>Your feedback is critical for us\u00a0to help shape ML.NET and make .NET a great platform for machine learning.<\/p>\n<p>Thanks,\nML.NET team<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are excited to announce the release of ML.NET 1.0 today.\u00a0 ML.NET is a free, cross-platform and open source\u00a0machine learning framework designed to bring the power of machine learning (ML) into .NET applications. https:\/\/github.com\/dotnet\/machinelearning\u00a0Star Get Started @ http:\/\/dot.net\/ml ML.NET allows you to train, build and ship custom machine learning models using C# or F# for [&hellip;]<\/p>\n","protected":false},"author":3194,"featured_media":58792,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685],"tags":[4,2928,568,93,96],"class_list":["post-22989","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","tag-net","tag-mldotnet","tag-ai","tag-machine-learning","tag-ml-net"],"acf":[],"blog_post_summary":"<p>We are excited to announce the release of ML.NET 1.0 today.\u00a0 ML.NET is a free, cross-platform and open source\u00a0machine learning framework designed to bring the power of machine learning (ML) into .NET applications. https:\/\/github.com\/dotnet\/machinelearning\u00a0Star Get Started @ http:\/\/dot.net\/ml ML.NET allows you to train, build and ship custom machine learning models using C# or F# for [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/22989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/users\/3194"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=22989"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/22989\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/58792"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=22989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=22989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=22989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}