.NET 机器学习
ML.NET 是一个跨平台的开源 .NET 机器学习 (ML) 框架。
ML.NET 允许开发人员在 .NET 应用程序中轻松构建、训练、部署和使用自定义模型,无需事先具备开发机器学习模型的专业知识或使用 Python 或 R 等其他编程语言的经验。该框架提供从文件和数据库加载数据的功能,支持数据转换,并包含许多 ML 算法。
使用 ML.NET,您可以为各种场景训练模型,如分类、预测和异常检测。
您还可以在 ML.NET 中使用 TensorFlow 和 ONNX 模型,这使得该框架更具扩展性,并扩大了支持的场景数量。
开始使用机器学习和 ML.NET
- 了解更多关于 ML.NET 基础知识。
- 通过我们的 ML.NET 入门教程 构建您的第一个 ML.NET 模型。
- 查看我们的 文档和教程。
- 参阅 API 参考文档。
- 克隆我们的 ML.NET 示例 GitHub 仓库 并运行一些示例应用。
- 查看一些 ML.NET 社区示例。
- 观看 ML.NET 视频 YouTube 播放列表 上的一些视频。
路线图
查看 ML.NET 的 路线图,了解团队计划在明年开展的工作。
ML.NET 支持的操作系统和处理器架构
ML.NET 可在使用 .NET Core 的 Windows、Linux 和 macOS 上运行,或在使用 .NET Framework 的 Windows 上运行。
ML.NET 还可在 ARM64、Apple M1 和 Blazor Web Assembly 上运行。但存在一些 限制。
所有平台都支持 64 位。Windows 支持 32 位,但 TensorFlow 和 LightGBM 相关功能除外。
ML.NET NuGet 包状态
发布说明
查看 发布说明 了解最新动态。您还可以阅读 博客文章 了解每个版本的更多详细信息。
使用 ML.NET 包
首先,确保您已安装 .NET Core 2.1 或更高版本。ML.NET 也可在 .NET Framework 4.6.1 或更高版本上运行,但建议使用 4.7.2 或更高版本。
创建应用后,您可以使用 .NET Core CLI 安装 ML.NET NuGet 包:
dotnet add package Microsoft.ML
或使用 NuGet 包管理器:
Install-Package Microsoft.ML
或者,您可以在 Visual Studio 的 NuGet 包管理器中添加 Microsoft.ML 包,或通过 Paket 添加。
项目的每日 NuGet 构建也可在我们的 Azure DevOps 源中获得:
https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-libraries/nuget/v3/index.json
构建 ML.NET(适用于构建 ML.NET 开源代码的贡献者)
要从源代码构建 ML.NET,请访问我们的 开发者指南。
发布流程和版本控制
ML.NET 的主要版本每年随 .NET 主要版本一起发布一次,从 2021 年 11 月与 .NET 6 一起发布的 ML.NET 1.7 开始,然后是与 .NET 7 一起发布的 ML.NET 2.0 等。我们将维护发布分支,以便可选地为 ML.NET 提供错误修复和/或小功能,与 .NET 服务的节奏保持一致。
查看 发布说明 以了解所有过去的 ML.NET 发布版本。
贡献
我们欢迎贡献!请查看我们的 贡献指南。
社区
- 加入我们的 Discord 社区。
- 每隔一周的周三太平洋时间上午 10 点收听 .NET 机器学习社区站会。
本项目采用了 贡献者公约 定义的行为准则,以明确我们社区中的预期行为。 有关更多信息,请参阅 .NET Foundation 行为准则。
代码示例
以下是用于训练模型以预测文本样本情感的代码片段。您可以在 示例仓库 中找到完整的示例。
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")
.Append(mlContext.BinaryClassification.Trainers.FastTree());
var model = learningPipeline.Fit(data);
现在我们可以使用模型进行推断(预测):
var predictionEngine = mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
var prediction = predictionEngine.Predict(new SentimentData
{
SentimentText = "今天是美好的一天!"
});
Console.WriteLine("预测结果:" + prediction.Prediction);
许可证
ML.NET 采用 MIT 许可证,可以免费用于商业用途。
.NET Foundation
ML.NET 是 .NET Foundation 的一部分。