Skip to content
ML.NET is an open source and cross-platform machine learning framework for .NET.
Branch: master
Clone or download
TomFinley Check for IEstimator/ITransformer schema consistency, fix bugs uncove…
…red (#3408)

* Modify test to make compatible in both directions.

* Fix vector kinded-ness of HashingEstimator output type.

* Change KeyToVector and KeyToBinaryVector to make generation of some metadata occur only on scalar inputs, not vector of size 1 inputs.

* Make NgramHashingEstimator's claim to output SlotNames dependent on whether invert hashing is used.

* Make propagation of IsNormalized metadata for feature selection estimators conditional on input.

* Make KeyToValueMappingEstimator a bit more selective about whether it claims to provide slot names or not.

* Fix meta multiclass trainer estimator base class to produce correct annotations.

* Fix calibrator estimator and transformer data.

* Calibrator estimators and transformers now agree on what the annotation data they produce. Before, they were inconsistent.

* Calibrator transformers used to provide no annotation data. Now, the will provide the usual prediction kind annotations of the score column if that score column has that annotation. They also correctly identify their output as normalized unconditionally.
Latest commit 082ab77 Apr 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
build Publish nugets to temporary myget feed (#3400) Apr 18, 2019
pkg Setting metadata back to defaults for Microsoft.ML.DataView (#3367) Apr 17, 2019
src Check for IEstimator/ITransformer schema consistency, fix bugs uncove… Apr 18, 2019
test Check for IEstimator/ITransformer schema consistency, fix bugs uncove… Apr 18, 2019
tools-local/Microsoft.ML.InternalCodeAnalyzer Move KeyType, VectorType and VBuffer to ML.DataView (#3022) Mar 22, 2019
.editorconfig Sort namespaces as per stylecop rules/.net convention and remove unus… Dec 25, 2018
.gitignore switch housing dataset to wine (#170) May 23, 2018
.gitmodules Making MF to be a part of ML.NET (#1263) Oct 26, 2018
.vsts-dotnet-ci.yml Updating MKL (#2867) Mar 18, 2019
BuildToolsVersion.txt Updating the buildtools version to the latest (#2822) Mar 6, 2019 Fixed a spelling from adressing to addressing. (#651) Aug 6, 2018
Directory.Build.props Fix IncludeBuildNumberInPackageVersion for official builds (#3182) Apr 3, 2019
DotnetCLIVersion.netcoreapp.latest.txt Updating the netcoreapp sdk to latest version (#2347) Feb 1, 2019
DotnetCLIVersion.txt Update May 7, 2018
LICENSE Initial commit May 4, 2018
Microsoft.ML.sln Add ML.DataView to the stable projects. (#3073) Mar 24, 2019 Update May 7, 2018 Update Readme Apr 4, 2019
THIRD-PARTY-NOTICES.TXT Fix runtime exception in ImageClassification. (#3249) Apr 9, 2019
build.cmd Fixes build errors caused by spaces in the project path (#196) May 23, 2018
build.proj Added RffBenchmark (#1855) Dec 21, 2018 Fixes build error when path contains space on Linux (#247) May 30, 2018
codecov.yml Enhance code coverage bot message. (#2235) Feb 20, 2019
init-tools.cmd Handle space in the directory path for building. (#2925) Mar 13, 2019
init-tools.msbuild Initial commit May 4, 2018 Updating the buildtools version to the latest (#2822) Mar 6, 2019
run.cmd Moves dotnet-server shutdown to official build yml file (#1432) Oct 30, 2018 Fixes build error when path contains space on Linux (#247) May 30, 2018

Machine Learning for .NET

ML.NET is a cross-platform open-source machine learning framework which makes machine learning accessible to .NET developers.

ML.NET allows .NET developers to develop their own models and infuse custom machine learning into their applications, using .NET, even without prior expertise in developing or tuning machine learning models.

ML.NET was originally developed in Microsoft Research, and evolved into a significant framework over the last decade and is used across many product groups in Microsoft like Windows, Bing, PowerPoint, Excel and more.

ML.NET enables machine learning tasks like classification (for example: support text classification, sentiment analysis) and regression (for example, price-prediction).

Along with these ML capabilities, this first release of ML.NET also brings the first draft of .NET APIs for training models, using models for predictions, as well as the core components of this framework such as learning algorithms, transforms, and ML data structures.


NuGet Status

ML.NET runs on Windows, Linux, and macOS using .NET Core, or Windows using .NET Framework. 64 bit is supported on all platforms. 32 bit is supported on Windows, except for TensorFlow, LightGBM, and ONNX related functionality.

The current release is 1.0.0-preview. Check out the release notes to see what's new.

First, ensure you have installed .NET Core 2.1 or later. ML.NET also works on the .NET Framework 4.6.1 or later, but 4.7.2 or later is recommended.

Once you have an app, you can install the ML.NET NuGet package from the .NET Core CLI using:

dotnet add package Microsoft.ML

or from the NuGet package manager:

Install-Package Microsoft.ML

Or alternatively, you can add the Microsoft.ML package from within Visual Studio's NuGet package manager or via Paket.

Daily NuGet builds of the project are also available in our MyGet feed:


To build ML.NET from source please visit our developers guide.


Debug Release
CentOS x64-debug x64-release
macOS x64-debug x64-release
Windows x64 x64-debug x64-release
Windows x86 Build Status Build Status
Core 3.0 Build Status Build Status


We welcome contributions! Please review our contribution guide.


Please join our community on Gitter Join the chat at

This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. For more information, see the .NET Foundation Code of Conduct.


Here is a snippet code for training a model to predict sentiment from text samples. You can find complete samples in samples repo.

var dataPath = "sentiment.csv";
var mlContext = new MLContext();
var loader = mlContext.Data.CreateTextLoader(new[]
		new TextLoader.Column("SentimentText", DataKind.String, 1),
		new TextLoader.Column("Label", DataKind.Boolean, 0),
	hasHeader: true,
	separatorChar: ',');
var data = loader.Load(dataPath);
var learningPipeline = mlContext.Transforms.Text.FeaturizeText("Features", "SentimentText")
var model = learningPipeline.Fit(data);

Now from the model we can make inferences (predictions):

var predictionEngine = mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
var prediction = predictionEngine.Predict(new SentimentData
    SentimentText = "Today is a great day!"
Console.WriteLine("prediction: " + prediction.Prediction);

A cookbook that shows how to use these APIs for a variety of existing and new scenarios can be found here.

API Documentation

See the ML.NET API Reference Documentation.


We have a repo of samples that you can look at.


ML.NET is licensed under the MIT license.

.NET Foundation

ML.NET is a .NET Foundation project.

There are many .NET related projects on GitHub.

  • .NET home repo - links to 100s of .NET projects, from Microsoft and the community.
You can’t perform that action at this time.