{"id":21651,"date":"2019-02-07T23:07:18","date_gmt":"2019-02-08T07:07:18","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/dotnet\/?p=21625"},"modified":"2021-09-29T15:56:03","modified_gmt":"2021-09-29T22:56:03","slug":"announcing-ml-net-0-10-machine-learning-for-net","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/dotnet\/announcing-ml-net-0-10-machine-learning-for-net\/","title":{"rendered":"Announcing ML.NET 0.10 \u2013 Machine Learning for .NET"},"content":{"rendered":"<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462198-f757f880-2b26-11e9-9a99-f610b327278b.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"ML.NET logo\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462198-f757f880-2b26-11e9-9a99-f610b327278b.png\" alt=\"alt text\" \/><\/a><\/p>\n<p><a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> is an open-source and cross-platform machine learning framework (Windows, Linux, macOS) for .NET developers. Using ML.NET, developers can leverage their existing tools and skillsets to develop and infuse custom AI into their applications by creating custom machine learning models.<\/p>\n<p><a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> allows you to create and use machine learning models targeting common tasks such as classification, regression, clustering, ranking, recommendations and anomaly detection. It also supports the broader open source ecosystem by proving integration with popular deep-learning frameworks like TensorFlow and interoperability through ONNX. Some common use cases of <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> are scenarios like Sentiment Analysis, Recommendations, Image Classification, Sales Forecast, etc. Please see our <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">samples<\/a> for more scenarios.<\/p>\n<p>Today we\u2019re announcing the release of <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> 0.10. ( <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> 0.1 was released at \/\/Build 2018). Note that ML.NET follows a <a href=\"https:\/\/semver.org\/\" rel=\"nofollow\">semantic versioning<\/a> pattern, so this preview version is 0.10. There will be additional versions such as 0.11 and 0.12 before we release v1.0.<\/p>\n<p>This release focuses on the overall stability of the framework, continuing to refine the API, increase test coverage and as an strategic milestone, we have moved the <code>IDataView<\/code> components into a new and separated assembly under <code>Microsoft.Data.DataView<\/code> namespace so it will favor interoperability in the future.<\/p>\n<p>The main highlights for this blog post are described below in further details:<\/p>\n<ul>\n<li><a href=\"#idataview-as-a-shared-type-across-libraries-in-the-net-ecosystem\" rel=\"nofollow\">IDataView as a shared type across libraries in the .NET ecosystem<\/a><\/li>\n<li><a href=\"#support-for-multiple-feature-columns-in-recommendations-ffm-based\" rel=\"nofollow\">Support for multiple &#8216;feature columns&#8217; in recommendations (FFM based)<\/a><\/li>\n<li><a href=\"#additional-updates-in-v010-timeframe\" rel=\"nofollow\">Additional updates in v0.10 timeframe<\/a><\/li>\n<li><a href=\"#explore-the-community-samples-and-share-yours\" rel=\"nofollow\">Explore the community samples and share yours!<\/a><\/li>\n<li><a href=\"#planning-to-go-to-production\" rel=\"nofollow\">Planning to go to production?<\/a><\/li>\n<li><a href=\"#get-started\" rel=\"nofollow\">Get Started!<\/a><\/li>\n<\/ul>\n<h2><a id=\"idataview-as-a-shared-type-across-libraries-in-the-net-ecosystem\" class=\"anchor\" href=\"#idataview-as-a-shared-type-across-libraries-in-the-net-ecosystem\"><\/a>IDataView as a shared type across libraries in the .NET ecosystem<\/h2>\n<p>The <code>IDataView<\/code> component provides a very efficient, compositional processing of tabular data (columns and rows) especialy made for machine learning and advanced analytics applications. It is designed to efficiently handle high dimensional data and large data sets. It is also suitable for single node processing of data partitions belonging to larger distributed data sets.<\/p>\n<p>For further info on IDataview read the <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/docs\/code\/IDataViewDesignPrinciples.md\">IDataView design principles<\/a><\/p>\n<h2><a id=\"user-content-whats-new-in-v010-for-idataview\" class=\"anchor\" href=\"#whats-new-in-v010-for-idataview\"><\/a>What&#8217;s new in v0.10 for IDataView<\/h2>\n<p>In <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> 0.10 we have segregated the <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/api\/microsoft.data.dataview.idataview?view=ml-dotnet\" rel=\"nofollow\">IDataView<\/a> component into a single assembly and NuGet package. This is a very important step towards the interoperability with other APIs and frameworks.<\/p>\n<h2><a id=\"user-content-why-segregate-idataview-from-the-rest-of-the-mlnet-framework\" class=\"anchor\" href=\"#why-segregate-idataview-from-the-rest-of-the-mlnet-framework\"><\/a>Why segregate IDataView from the rest of the ML.NET framework?<\/h2>\n<p>This is a very important milestone that will help the ecosystem&#8217;s interoperability between multiple frameworks and libraries from Microsoft of third parties. By seggregating <code>IDataView<\/code>, different libraries will be able to reference it and use it from their API and allow users to pass large volumes of data between two independent libraries.<\/p>\n<p>For example, from <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> you can of course consume and produce <code>IDataView<\/code> instances. But what if you need to integrate with a different framework by creating an <code>IDataView<\/code> from another API such as any &#8220;Data Preparation framework&#8221; library? If those frameworks can simply reference a single NuGet package with just the <code>IDataView<\/code>, then you can directly pass data into <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> from those frameworks without having to copy the data into a format that <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> consumes. Also, the additional framework wouldn&#8217;t depend on the whole <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> framework but just reference a very clean package limited to the <code>IDataView<\/code>.<\/p>\n<p>The image below is an aspirational approach when using <code>IDataView<\/code> across frameworks in the ecosystem:<\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462406-d17f2380-2b27-11e9-8fe7-54b3fc000628.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Positioning IDataView\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462406-d17f2380-2b27-11e9-8fe7-54b3fc000628.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>Another good example would be any plotting\/charting library in the .NET ecosystem that could consume data using <code>IDataView<\/code>. You could take data that was produced by <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> and feed it directly into the plotting library without that library having a direct reference to the whole <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> framework. There would be no need to copy, or change the shape of the data at all. And there is no need for this plotting library to know anything about ML.NET.<\/p>\n<p>Basically, <code>IDataView<\/code> can be an exchange data format which allows producers and consumers to pass large amounts of data in a standarized way.<\/p>\n<p>For additional info check the PR <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/pull\/2220\">#2220<\/a><\/p>\n<h2><a id=\"support-for-multiple-feature-columns-in-recommendations-ffm-based\" class=\"anchor\" href=\"#support-for-multiple-feature-columns-in-recommendations-ffm-based\"><\/a>Support for multiple &#8216;feature columns&#8217; in recommendations (FFM based)<\/h2>\n<p>In previous ML.NET releases, when using the <em>Field-aware Factorization Machine (FFM)<\/em> trainer (training algorithm) you could only provide a single feature column like in <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/blob\/master\/samples\/csharp\/end-to-end-apps\/Recommendation-MovieRecommender\/MovieRecommender_Model\/Program.cs#L74\">this sample app<\/a><\/p>\n<p>In 0.10 release we&#8217;ve added support for multiple &#8216;feature columns&#8217; in your training dataset when using an FFM trainer by allowing to specify those additional column names in the trainer&#8217;s &#8216;Options&#8217; parameter as shown in the following code snippet:<\/p>\n<div class=\"highlight highlight-source-cs\">\n<pre class=\"lang:default decode:true \">var ffmArgs = new FieldAwareFactorizationMachineTrainer.Options();\r\n\r\n\/\/ Create the multiple field names.\r\nffmArgs.FeatureColumn = nameof(MyObservationClass.MyField1); \/\/ First field.\r\nffmArgs.ExtraFeatureColumns = new[]{ nameof(MyObservationClass.MyField2), nameof(MyObservationClass.MyField3) }; \/\/ Additional fields.\r\n\r\nvar pipeline = mlContext.BinaryClassification.Trainers.FieldAwareFactorizationMachine(ffmArgs);\r\n\r\nvar model = pipeline.Fit(dataView);<\/pre>\n<p><span style=\"font-size: 1rem;\">You can see additional code example details in <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/test\/Microsoft.ML.Tests\/TrainerEstimators\/FAFMEstimator.cs#L17\">this code<\/a><\/p>\n<\/div>\n<h2><a id=\"additional-updates-in-v010-timeframe\" class=\"anchor\" href=\"#additional-updates-in-v010-timeframe\"><\/a>Additional updates in v0.10 timeframe<\/h2>\n<h2><a id=\"user-content-support-for-returning-multiple-predicted-labels\" class=\"anchor\" href=\"#support-for-returning-multiple-predicted-labels\"><\/a>Support for returning multiple predicted labels<\/h2>\n<p>Until ML.NET v0.9, when predicting (for instance with a multi-class classification model), you could only predict and return a single label. That&#8217;s an issue for many business scenarios. For instance, in an eCommerce scenario, you could want to automatically classify a product and assign it to multiple product categories instead of just a single category.<\/p>\n<p>However, when predicting, ML.NET internally already had a list of the multiple possible predictions with a score\/proability per each in the schema&#8217;s data, but the API was simply not returning the list of possible predicted labels but a single one.<\/p>\n<p>Therefore, this improvement allows you to access the schema&#8217;s data so you can get a list of the predicted labels which can then be related to their scores\/proabilities provided by the float[] Score array in your Prediction class, such as in this <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/blob\/master\/samples\/csharp\/getting-started\/MulticlassClassification_Iris\/IrisClassification\/IrisClassificationConsoleApp\/DataStructures\/IrisPrediction.cs\">sample prediction class<\/a>.<\/p>\n<p>For additional info check <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/test\/Microsoft.ML.Tests\/Scenarios\/Api\/Estimators\/PredictAndMetadata.cs#L41\">this code example<\/a><\/p>\n<h2><a id=\"user-content-minor-updates-in-010\" class=\"anchor\" href=\"#minor-updates-in-010\"><\/a>Minor updates in 0.10<\/h2>\n<ul>\n<li><em>Introducing Microsoft.ML.Recommender NuGet name instead of Microsoft.ML.MatrixFactorization name:<\/em> <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/pkg\/Microsoft.ML.Recommender\/Microsoft.ML.Recommender.nupkgproj\">Microsoft.ML.Recommender<\/a>] is a better naming for NuGet packages based on the scenario (Recommendations) instead of the trainer&#8217;s name (Microsoft.ML.MatrixFactorization).<\/li>\n<li><em>Added support in TensorFlow for using using text and sparse input in TensorFlow:<\/em> Specifically, this adds support for loading a map from a file through dataview by using ValueMapperTransformer. This provides support for additional scenarios like a <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/issues\/747\">Text\/NLP scenario<\/a>) in TensorFlowTransform where model&#8217;s expected input is vector of integers.<\/li>\n<li><em>Added Tensorflow unfrozen models support in GetModelSchema:<\/em> For a code example loading an unfrozen TensorFlow check it out <a href=\"https:\/\/github.com\/dotnet\/machinelearning\/blob\/master\/test\/Microsoft.ML.Tests\/ScenariosWithDirectInstantiation\/TensorflowTests.cs#L765\">here<\/a>.<\/li>\n<\/ul>\n<h2><a id=\"user-content-breaking-changes-in-mlnet-010\" class=\"anchor\" href=\"#breaking-changes-in-mlnet-010\"><\/a>Breaking changes in ML.NET 0.10<\/h2>\n<p>For your convenience, if you are moving your code from ML.NET v0.9 to v0.10, you can check out the <a href=\"https:\/\/gist.github.com\/CESARDELATORRE\/14821afefdd88c4c2a6d619931748870\">breaking changes list that impacted our samples<\/a>.<\/p>\n<h2><a id=\"user-content-instrumented-code-coverage-tools-as-part-of-the-mlnet-ci-systems\" class=\"anchor\" href=\"#instrumented-code-coverage-tools-as-part-of-the-mlnet-ci-systems\"><\/a>Instrumented code coverage tools as part of the ML.NET CI systems<\/h2>\n<p>We have also instrumented code coverage tools (using <a href=\"https:\/\/codecov.io\/\" rel=\"nofollow\">https:\/\/codecov.io\/<\/a>) as part of our CI systems and will continue to push for stability and quality in the code.<\/p>\n<p>You can check it out <a href=\"https:\/\/codecov.io\/gh\/dotnet\/machinelearning\" rel=\"nofollow\">here<\/a> which is also a link in the home page of the <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> repo:<\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462542-566a3d00-2b28-11e9-8095-4074eed31543.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"pipelines screenshot\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462542-566a3d00-2b28-11e9-8095-4074eed31543.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>Once you click on that link, you&#8217;ll see the current code coverage for <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a>:<\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462609-a3e6aa00-2b28-11e9-86b8-ba131f42ee7a.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Code coverage screenshot\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462609-a3e6aa00-2b28-11e9-86b8-ba131f42ee7a.png\" alt=\"alt text\" \/><\/a><\/p>\n<h2><a id=\"explore-the-community-samples-and-share-yours\" class=\"anchor\" href=\"#explore-the-community-samples-and-share-yours\"><\/a>Explore the community samples and share yours!!<\/h2>\n<p>As part of the <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">ML.NET Samples repo<\/a> we also have a special <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/blob\/master\/docs\/COMMUNITY-SAMPLES.md\">Community Samples page<\/a> pointing to multiple samples provided by the community. These samples are not maintained by Microsoft but are very interesting and cover additional scenarios not covered by us.<\/p>\n<p>Here&#8217;s an screenshot of the current community samples:<\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462663-d2648500-2b28-11e9-80bb-9ce099f8b1e0.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Community Samples List\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462663-d2648500-2b28-11e9-80bb-9ce099f8b1e0.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>There are pretty cool samples like the following:<\/p>\n<p><strong>&#8216;Photo-Search&#8217; WPF app running a TensorFlow model exported to ONNX format<\/strong><\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462723-1fe0f200-2b29-11e9-939c-d19e55371a99.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"WPF-ONNX app\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462723-1fe0f200-2b29-11e9-939c-d19e55371a99.png\" alt=\"alt text\" \/><\/a><\/p>\n<p><strong>UWP app using ML.NET<\/strong><\/p>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462766-4c950980-2b29-11e9-85ae-99327d42b61f.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"UWP app running ML.NET models\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462766-4c950980-2b29-11e9-85ae-99327d42b61f.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>Other very interesting samples are:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/endintiers\/Unearth.Demo.MLCustomTransform\">ML.NET custom Transform implementation<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/Nukepayload2\/machinelearning-samples\/tree\/master\/samples\/visualbasic\">ML.NET samples in VB.NET<\/a><\/li>\n<\/ul>\n<h2><a id=\"user-content-share-your-sample-with-the-mlnet-community\" class=\"anchor\" href=\"#share-your-sample-with-the-mlnet-community\"><\/a>Share your sample with the ML.NET community!<\/h2>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462877-87973d00-2b29-11e9-8721-88995f67d541.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Community Samples Sharing\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462877-87973d00-2b29-11e9-8721-88995f67d541.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>We encourage you to share your <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> demos and samples with the community by simply submitting its brief description and URL pointing to your GitHub repo or blog posts, into this <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/issues\/86\">repo issue &#8220;Request for your samples!&#8221;<\/a>.<\/p>\n<p>We&#8217;ll do the rest and publish it at the <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\/blob\/master\/docs\/COMMUNITY-SAMPLES.md\">ML.NET Community Samples page<\/a>!<\/p>\n<h2><a id=\"planning-to-go-to-production\" class=\"anchor\" href=\"#planning-to-go-to-production\"><\/a>Planning to go to production?<\/h2>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462906-abf31980-2b29-11e9-9cfe-befc6286035b.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Going to production image\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462906-abf31980-2b29-11e9-9cfe-befc6286035b.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>If you are using <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> in your app and looking to go into production, you can talk to an engineer on the <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> team to:<\/p>\n<ol>\n<li>Get help implementing <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> successfully in your application.<\/li>\n<li>Demo your app and potentially have it featured on the .NET Blog, dot.net site, or other Microsoft channel.<\/li>\n<\/ol>\n<p>Fill out <a href=\"https:\/\/www.research.net\/r\/mlnet-apps\" rel=\"nofollow\">this form<\/a> and someone from the <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> team will contact you.<\/p>\n<h2><a id=\"get-started\" class=\"anchor\" href=\"#get-started\"><\/a>Get started!<\/h2>\n<p><a href=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462940-cd540580-2b29-11e9-9e92-0f63ccc5d8e2.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" style=\"max-width: 100%;\" title=\"Get started icon\" src=\"https:\/\/user-images.githubusercontent.com\/1712635\/52462940-cd540580-2b29-11e9-9e92-0f63ccc5d8e2.png\" alt=\"alt text\" \/><\/a><\/p>\n<p>If you haven\u2019t already get started with <a href=\"https:\/\/www.microsoft.com\/net\/learn\/apps\/machine-learning-and-ai\/ml-dotnet\/get-started\" rel=\"nofollow\">ML.NET here<\/a>.<\/p>\n<p>Next, going further explore some other resources:<\/p>\n<ul>\n<li>Tutorials and resources at the <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/\" rel=\"nofollow\">Microsoft Docs ML.NET Guide<\/a><\/li>\n<li>Code samples at the <a href=\"https:\/\/github.com\/dotnet\/machinelearning-samples\">machinelearning-samples GitHub repo<\/a><\/li>\n<li>Important <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> concepts for understanding the new API are introduced <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/basic-concepts-model-training-in-mldotnet\" rel=\"nofollow\">here<\/a><\/li>\n<li>&#8220;How to&#8221; guides that show how to use these APIs for a variety of scenarios can be found <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/machine-learning\/how-to-guides\/\" rel=\"nofollow\">here<\/a><\/li>\n<li>Download the Visual Studio templates for <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> from the <a href=\"https:\/\/aka.ms\/mlnettemplates\" rel=\"nofollow\">Visual Studio Marketplace<\/a><\/li>\n<\/ul>\n<p>We will appreciate your feedback by filing issues with any suggestions or enhancements in the <a href=\"https:\/\/github.com\/dotnet\/machinelearning\">ML.NET GitHub repo<\/a> to help us shape <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> and make .NET a great platform of choice for Machine Learning.<\/p>\n<p>Thanks and happy coding with <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a>!<\/p>\n<p>The <a href=\"http:\/\/dot.net\/ml\" rel=\"nofollow\">ML.NET<\/a> Team.<\/p>\n<p><em>This blog was authored by Cesar de la Torre and Eric Erhardt plus additional contributions of the ML.NET team<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ML.NET is an open-source and cross-platform machine learning framework (Windows, Linux, macOS) for .NET developers. Using ML.NET, developers can leverage their existing tools and skillsets to develop and infuse custom AI into their applications by creating custom machine learning models. ML.NET allows you to create and use machine learning models targeting common tasks such as [&hellip;]<\/p>\n","protected":false},"author":362,"featured_media":21752,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[685],"tags":[310],"class_list":["post-21651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","tag-mlnet-machinelearning-dotnetcore"],"acf":[],"blog_post_summary":"<p>ML.NET is an open-source and cross-platform machine learning framework (Windows, Linux, macOS) for .NET developers. Using ML.NET, developers can leverage their existing tools and skillsets to develop and infuse custom AI into their applications by creating custom machine learning models. ML.NET allows you to create and use machine learning models targeting common tasks such as [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/21651","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\/362"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/comments?post=21651"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/posts\/21651\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media\/21752"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/media?parent=21651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/categories?post=21651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/dotnet\/wp-json\/wp\/v2\/tags?post=21651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}