原文地址:​​https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0/​

我们很高兴地宣布今天发布​ML.NET 1.0​​。  ​​ML.NET​​是一个免费的,跨平台的开源机器学习框架,旨在将机器学习(ML)的强大功能引入.NET应用程序。

微软发布ML.NET 1.0_ML

​https://github.com/dotnet/machinelearning ​

入门@ ​​http://dot.net/ml​

ML.NET允许您使用C#或F#训练,构建和发布自定义机器学习模型,用于情景分析,问题分类,预测,推荐等场景。您可以在我们的​​ML.NET示例仓库中​​查看这些常见的场景和任务  。

ML.NET最初是在微软研究院开发的,并且演变成许多Microsoft产品使用的重要框架,例如Windows Defender,Microsoft Office(Powerpoint设计灵感,Excel图表推荐),Azure机器学习,PowerBI关键影响者等等!

自从推出以来,许多组织都在使用ML.NET,如​​SigParser(垃圾邮件检测),​​​ ​​William Mullens(法律问题分类)​​​和​​Evolution软件(榛子水分检测)​​​。您可以在我们的​​ML.NET客户展示中​​使用ML.NET跟踪这些和许多其他组织的旅程。这些用户告诉我们,ML.NET的易用性,重用.NET技能的能力以及将其技术堆栈完全保留在.NET中是他们使用ML.NET的主要驱动因素。

除了ML.NET 1.0版本,我们还添加了新的预览功能,如自动机器学习(AutoML)的强大功能和ML.NET CLI和ML.NET Model Builder等新工具,这意味着现在可以只需点击右键就可以为您的应用程序添加机器学习模型!

微软发布ML.NET 1.0_机器学习_02

​本文的其余部分重点介绍这些新体验。

ML.NET核心组件

ML.NET旨在提供终端工作流程,以便在机器学习(预处理,特征工程,建模,评估和操作)的各个步骤中将ML用于.NET应用程序。ML.NET 1.0提供以下关键组件:

  • 数据表示
  • 基本ML数据管道数据类型,如​​IDataView​​ - 基本数据管道类型
  • 支持从分隔文本文件或IEnumerable对象中读取数据
  • 支持机器学习任务:
  • 二进制分类
  • 多级分类
  • 回归
  • 排行
  • 异常检测
  • 聚类
  • 推荐(预览)
  • 数据转换和特色化
  • 文本
  • 分类
  • 特征选择
  • 规范化和缺失值处理
  • 图像特征化
  • 时间序列(预览)
  • 支持ONNX和TensorFlow模型集成(预览)
  • 其他
  • 模型理解和解释
  • 用户定义的自定义转换
  • 架构操作
  • 支持数据集操作和交叉验证
自动机器学习预览

如今,机器学习入门涉及陡峭的学习曲线。在构建自定义机器学习模型时,您必须确定为您的场景选择哪个机器学习任务(即分类或回归?),将您的数据转换为ML算法可以理解的格式(例如文本数据 - >数字向量),并微调这些ML算法以提供最佳性能。如果您是ML的新手,这些步骤中的每一步都会非常艰巨!

自动机器学习通过自动确定如何转换输入数据并选择性能最佳的机器学习算法,使您能够轻松构建一流的自定义机器学习模型,使您的机器学习之旅更加简单。

ML.NET中的AutoML支持处于预览阶段,我们目前支持回归(用于价格预测等场景)和分类(用于情感分析,文档分类,垃圾邮件检测等场景)机器学习任务。

您可以使用ML.NET Model Builder,ML.NET CLI或直接使用AutoML API ​​(可在此处找到例子​​),以三种形式在ML.NET中试用AutoML体验。

对于不熟悉机器学习的用户,我们建议从Visual Studio中的ML.NET模型构建器和任何平台上的ML.NET CLI开始。AutoML API对于您想要动态构建模型的场景也非常方便。

模型生成器预览

为了简化.NET开发人员构建ML模型的过程,我们今天也很高兴地宣布ML.NET模型构建器。使用ML.NET模型构建器,只需右键单击即可将机器学习添加到您的应用程序中!

Model Builder是一个简单的UI工具,供开发人员使用AutoML使用您提供的数据集构建最佳的ML模型。除此之外,Model Builder还为最佳性能模型生成模型培训和模型消耗代码,允许您快速将ML添加到现有应用程序中。

微软发布ML.NET 1.0_ML_03

​了解有关ML.NET模型构建器的更多信息​

Model Builder目前处于预览阶段,我们很乐意为您试用并告诉我们您的想法!

ML.NET CLI预览

ML.NET CLI(命令行界面)是我们今天推出的另一个新工具!

ML.NET CLI是一个dotnet工具,允许使用AutoML和ML.NET生成ML.NET模型。ML.NET CLI快速遍历您的数据集以获取特定的ML任务(目前支持回归和分类)并生成最佳模型。

CLI除了生成最佳模型外,还允许用户为最佳性能模型生成模型培训和模型消耗代码。

ML.NET CLI是跨平台的,是.NET CLI的简单附件。Model Builder Visual Studio扩展还使用ML.NET CLI提供模型构建器功能。

您可以通过此命令安装ML.NET CLI。

dotnet tool install -g mlnet

下图显示了ML.NET CLI构建情感分析数据集。

微软发布ML.NET 1.0_应用程序_04

​了解有关ML.NET CLI的更多信息​

ML.NET CLI目前也处于预览状态,我们很乐意为您提供试用,并在下面分享您的想法!

开始吧!

如果你还没有,开始使用ML.NET很简单,你可以通过几个简单的步骤来完成,如下所示。下面的示例​​显示了如何使用ML.NET执行情绪分析​​。

//Step 1. Create a ML Context

var ctx = new MLContext();

//Step 2. Read in the input data for model training

IDataView dataReader = ctx.Data

.LoadFromTextFile<MyInput>(dataPath, hasHeader: true);

//Step 3. Build your estimator

IEstimator<ITransformer> est = ctx.Transforms.Text

.FeaturizeText("Features", nameof(SentimentIssue.Text))

.Append(ctx.BinaryClassification.Trainers

.LbfgsLogisticRegression("Label", "Features"));

//Step 4. Train your Model

ITransformer trainedModel = est.Fit(dataReader);

//Step 5. Make predictions using your model

var predictionEngine = ctx.Model

.CreatePredictionEngine<MyInput, MyOutput>(trainedModel);

var sampleStatement = new MyInput { Text = "This is a horrible movie" };

var prediction = predictionEngine.Predict(sampleStatement);

您还可以探索各种其他学习资源,如​​ML.NET的教程和资源,以及ML.NET示例,​​演示产品推荐,异常检测和更多实际操作等流行方案。

ML.NET的下一步是什么

虽然我们非常高兴今天发布ML.NET 1.0,但团队已经在努力为ML.NET 1.0版发布以下功能。

  • 其他机器学习场景的AutoML体验
  • 改进了对深度学习场景的支持
  • 支持其他其他来源,如SQL Server,CosmosDB,Azure Blob存储等。
  • 在Azure上横向扩展以进行模型培训和消费
  • 使用模型构建器和CLI时,支持其他ML方案和功能
  • 用于Apache Spark和ML.NET的.NET大规模机器学习的本机集成
  • .NET中的新ML类型,例如DataFrame
你帮忙建了它

特别呼吁这些令人惊叹的贡献者,他们与我们一起开始使用ML.NET为.NET开发人员提供机器学习。

​amiteshenoy​​​,  ​​beneyal​​​,  ​​bojanmisic​​​,  ​​Caraul​​​,  ​​dan-drews​​​,  ​​DAXaholic​​​,  ​​dhilmathy​​​,  ​​dzban2137​​​,  ​​elbruno​​​,  ​​endintiers​​​,  ​​f1x3d​​​,​​feiyun0112​​​,  ​​forki​​​,  ​​harshsaver​​​,
​​​helloguo​​​,  ​​hvitved​​​,  ​​Jongkeun​​​,  ​​JorgeAndd​​​,  ​​JoshuaLight​​​,  ​​jwood803​​​,  ​​kant2002​​​,  ​​kilick​​​,  ​​Ky7m​​​,​​llRandom​​​,  ​​malik97160​​​,  ​​MarcinJuraszek​​​,  ​​mareklinka​​​,
​​​Matei13​​​,  ​​mfaticaearnin​​​,  ​​mnboos​​​,  ​​nandaleite​​​,  ​​Nepomuceno ​​​ ​​nihitb06​​​,​​Niladri24dutta​​​,  ​​PaulTFreedman​​​,  ​​Pielgrin​​​,  ​​pkulikov​​​,  ​​Potapy4​​​,  ​​Racing5372​​​,
​​​rantri​​​,  ​​rantri​​​,  ​​rauhs​​​,  ​​robosek​​​,  ​​ross-p-smith​​​,  ​​SolyarA​​​,​​Sorrien​​​,  ​​suhailsinghbains​​​, ​​terop​​​,  ​​ThePiranha​​​,  ​​Thomas-SB​​​,  ​​timitoc​​​,  ​​tincann​​​,  ​​v-tsymbalistyi​​​,
​​​van-tienhoang​​​,  ​​veikkoeeva​​​和​​yamachu​

如果您还没有,​​请试试ML.NET!​

您的反馈对于我们帮助塑造ML.NET并使.NET成为机器学习的绝佳平台至关重要。

谢谢,
ML.NET团队