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 ML into their applications without prior expertise in developing or tuning machine learning models, all in .NET.
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.
With this first preview release, ML.NET enables ML tasks like classification (e.g. support text classification, sentiment analysis) and regression (e.g. 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.
With this first preview release, ML.NET enables ML tasks like classification (for example, support text classification, sentiment analysis) and regression (for example, price-prediction).
other languages.
Read this inInstallation
ML.NET runs on Windows, Linux, and macOS - any platform where 64 bit .NET Core or later is available.
The current release is 0.6. Check out the release notes to see what's new.
First, ensure you have installed .NET Core 2.0 or later. ML.NET also works on the .NET Framework. Note that ML.NET currently must run in a 64-bit process.
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:
Building
To build ML.NET from source please visit our developers guide.
x64 Debug | x64 Release | |
---|---|---|
Linux | ||
macOS | ||
Windows |
Contributing
We welcome contributions! Please review our contribution guide.
Community
Please join our community on Gitter
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.
Examples
Here's an example of code to train a model to predict sentiment from text samples. (You can find a sample of the legacy API here):
var env = new LocalEnvironment();
var reader = TextLoader.CreateReader(env, ctx => (
Target: ctx.LoadFloat(2),
FeatureVector: ctx.LoadFloat(3, 6)),
separator: ',',
hasHeader: true);
var data = reader.Read(new MultiFileSource(dataPath));
var classification = new MulticlassClassificationContext(env);
var learningPipeline = reader.MakeNewEstimator()
.Append(r => (
r.Target,
Prediction: classification.Trainers.Sdca(r.Target.ToKey(), r.FeatureVector)));
var model = learningPipeline.Fit(data);
Now from the model we can make inferences (predictions):
var predictionFunc = model.MakePredictionFunction<SentimentInput, SentimentPrediction>(env);
var prediction = predictionFunc.Predict(new SentimentData
{
SentimentText = "Today is a great day!"
};
Console.WriteLine("prediction: " + prediction.Sentiment);
A cookbook that shows how to use these APIs for a variety of existing and new scenarios can be found here.
Samples
We have a repo of samples that you can look at.
License
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.