本篇文章简要介绍 ML.NET 背景和面向 .NET 开发的特色功能,以及典型的机器学习编码示例,并分享自己整理的 ML.NET API 速查手册。
ML.NET 简介
ML.NET 是面向.NET开发人员的跨平台机器学习框架,它具备在联机或本地环境中将机器学习模型集成到 .NET 应用程序中的能力。
2002 年微软启动有一个研究项目命名为 TMSN,其意在“Test mining search and navigation”,后来它被改名为 TLC(The learning code)。ML.NET 正是派生自 TLC 库,最初被用于微软的内部产品。
ML.NET 的核心既可以通过指定算法来训练自定义机器学习模型,也可以导入预训练的 TensorFlow 和 ONNX 模型继续训练。生成模型后,可以将其添加到应用程序中进行预测。ML.NET 支持在使用 .NET Core/.NET Framework 的 Windows、Linux 和 macOS 上运行,所有平台均支持 64 位,此外 Windows 平台支持 32 位,但 TensorFlow、LightGBM 和 ONNX 相关功能除外。
ML.NET 集成了众多主流的转换器、算法库,通过 API 提供了丰富的数据处理对象和算法评估器,并且对 Infer.NET、NimbusML、Scikit-Learn、TensorFlow 等机器学习相关的包提供了方便地扩展机制。如果您是一位 .NET 开发者,您将很轻松地上手使用,并且将成果无缝集成到 .NET Core 应用程序中,特别是 ASP.NET Core 的 Web 应用中实现一些高级的智能服务。
逻辑回归模型示例
简单示例训练一个用于二分类的逻辑回归模型代码如下:
//Step 1. Create an ML Context
var ctx = new MLContext();
//Step 2. Read in the input data from a text file for model training
IDataView trainingData = ctx.Data
.LoadFromTextFile<ModelInput>(dataPath, hasHeader: true);
//Step 3. Build your data processing and training pipeline
var pipeline = ctx.Transforms.Text
.FeaturizeText("Features", nameof(SentimentIssue.Text))
.Append(ctx.BinaryClassification.Trainers
.LbfgsLogisticRegression("Label", "Features"));
//Step 4. Train your model
ITransformer trainedModel = pipeline.Fit(trainingData);
//Step 5. Make predictions using your trained model
var predictionEngine = ctx.Model
.CreatePredictionEngine<ModelInput, ModelOutput>(trainedModel);
var sampleStatement = new ModelInput() { Text = "This is a horrible movie" };
var prediction = predictionEngine.Predict(sampleStatement);
ML.NET 目前在 Github 上以开源项目(https://github.com/dotnet/mac...)进行持续更新迭代,最新的版本为1.6。
ML.NET 特色
ML.NET 支持的热门机器学习任务覆盖众多,包括了传统的分类、回归、聚类,也支持了有关时序和图像神经网络。目前已知的应用场景例如:情绪分析、产品推荐、价格预测、客户分层、对象检测、欺诈检测、峰值检测、图像分类、销量预测等等。
ML.NET 对 .NET 开发者非常友好,它提供了 Visual Studio 扩展 Model Builder, 这是一个可视化的工具套件,以非常低门槛的操作要求即可快速训练出指定任务类型的机器学习模型,并且自动生成相关的源码,方便后续修改和维护。对于喜欢通过代码方式进行机器学习任务的伙伴,官方提供了丰富的文档(https://docs.microsoft.com/en...)和示例代码库(https://github.com/dotnet/mac...)。
另外,ML.NET 针对 CLI 也提供了命令行工具,而且是支持 AutoML 的,使得常见的机器学习场景实现零编码。
速查手册
通过 AutoML 生成的代码一开始阅读起来会有一点点不习惯,也不利于后续改造代码以适应开发者的实际需要。如果从来没有接触过机器学习的开发者,可能会担心记不住、看不懂、用不惯 ML.NET API 文档中密密麻麻基于专业术语的对象和方法,鉴于收集到如是实际开发者反馈的障碍,作者将 ML.NET API 按经典的机器学习实现步骤,把常用的方法整理成一份图册,并添加了一些代码片段用来帮助快速理解 API 对象和方法的使用规则。另外,图册底部把截止目前 ML.NET 已内置支持的模型训练器和数据转换器列成表格方便掌握完整信息。图册以高清矢量格式的图片分享出来,在编码的时候放在习惯的地方,像开发其他 .NET 应用一样可随时查看,一目了然。
速查手册高清版本下载:https://beanhsiang.github.io/...