资讯专栏INFORMATION COLUMN

微软开源 ML.NET:一款跨平台、成熟的机器学习框架

linkin / 3767人阅读

摘要:微软在大会上兴奋地宣布了的预览版,这是一种跨平台的开源机器学习框架。核心组件作为的一部分而发布今天的代码仓库包含用于模型训练和使用的,以及许多常见的机器学习任务如回归和分类所需要的各种转换和学习器。

微软在Build 2018大会上兴奋地宣布了ML.NET的预览版,这是一种跨平台的开源机器学习框架。ML.NET将让广大.NET开发人员可以开发自己的模型,并且将自定义的机器学习融入到其应用程序中,无需之前拥有开发或调整机器学习模型方面的专业知识。

ML.NET最初是在微软研究中心开发而它的,在过去的十年已发展成为一种重要的框架;它用于微软的许多产品组合中,比如Windows、Bing和Azure等。

有了这第一个预览版,ML.NET能够支持诸多机器学习任务,比如说分类(比如文本分类和情绪分析)以及回归(比如趋势预测和价格预测)。除了这些机器学习功能外,ML.NET的这第一个版本还引入了训练模型的.NET API初稿,使用模型用于预测,还包括该框架的核心组件,比如学习算法、转换和核心的机器学习数据结构。

ML.NET首先是一个框架,这意味着它经扩展后可以添加流行的机器学习库,比如TensorFlow、Accord.NET和CNTK。我们致力于将开发ML.NET的内部功能方面的全部经验带给开源界的ML.NET。

综上所述,ML.NET代表了我们致力于通过.NET让机器学习变得很出色。

随着时间的推移,ML.NET将充分利用流行的深度学习库(比如TensorFlow、Caffe2和CNTK)以及一般的机器学习库(比如Accord.NET),从而支持其他机器学习场景,比如推荐系统、异常检测及其他方法(比如深度学习)。

ML.NET还允许采用代码优先的方法,补充了Azure机器学习和认知服务提供的体验,并支持应用程序本地部署以及自行构建模型的功能。

ML.NET核心组件

ML.NET作为.NET Foundation的一部分而发布;今天的代码仓库包含用于模型训练和使用的.NET C# API,以及许多常见的机器学习任务(如回归和分类)所需要的各种转换和学习器。

ML.NET旨在提供E2E工作流程,以便在预处理、特征工程、建模、评估和操作化等过程中将机器学习融入到.NET应用程序中。

ML.NET本身支持机器学习各方面所需要的类型和运行时环境,包括核心数据类型、可扩展流水线、高性能数学、面向异构数据的数据结构和工具支持等。

下面这张表显示了作为ML.NET 0.1的一部分发布的完整组件列表。

我们旨在让ML.NET的API具有通用性,那样CNTK、Accord.NET和TensorFlow等其他框架以及其他库就可以通过单一的共享式API来加以使用。

安装入门

想开始使用ML.NET,请使用下列命令从CLI来安装ML.NETNuGet:

从软件包管理器来安装:

您可以直接从https://github.com/dotnet/machinelearning来构建框架。

借助ML.NET实现情绪分类

训练您自己的模型

这个简单的代码片段用来训练情绪分类模型(完整的代码片段可在此:https://github.com/dotnet/machinelearning/blob/master/test/Microsoft.ML.Tests/Scenarios/Scenario3_SentimentPrediction.cs找到)。

让我们更详细地讨论这个方面。我们创建了一个LearningPipeline,它将负责封装数据加载、数据处理/特征化和学习算法。这些是训练机器学习模型所需要的几个步骤,该模型让我们得以拿来输入数据后输出预测结果。

这条流水线的第一部分是TextLoader,它将来自我们训练文件的数据加载到流水线。然后,我们使用TextFeaturizer将SentimentText列转换成名为Features的数字向量,该数字向量可以被机器学习算法所使用(因为它无法接受文本输入)。这是我们的预处理/特征化步骤。

FastTreeBinaryClassifier是我们将用于该流水线中的决策树学习器。就像特征化步骤那样,尝试ML.NET中不同的学习器并更改其参数有望找到更好的结果。 PredictedLabelColumnOriginalValueConverter将模型的预测标签转换回成原始值/格式。

pipeline.Train()训练流水线(加载数据、训练特征器和学习器)。直到这一步发生后,才执行试验。

将经过训练的模型用于预测

为了得到预测结果,我们对新数据使用model.Predict()。请注意,输入数据是一个字符串,模型包含特征化,所以我们的流水线在训练和预测期间都保持同步。我们不必编写专门用于预测的预处理/特征化代码。

前方的道路

我们渴望将许多功能添加到ML.NET中,但我们很想了解哪些功能最适合您的要求。目前我们正在探索的领域包括:

另外的机器学习任务和场景

使用TensorFlow和CNTK的深度学习

ONNX支持

在Azure上横向扩展

更好的GUI,以简化机器学习任务

与VS工具集成,用于AI

针对.NET的语言创新

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4759.html

相关文章

  • 机器学习十三套框架

    摘要:十三套框架助你玩转机器学习技术在今天的文章中,我们将共同了解十三款机器学习框架,一部分去年刚刚发布另一部分则在不久前进行了全部升级。目前该项目正积极添加对的支持能力,不过此类项目一般更倾向于直接面向各承载机器学习任务的主流环境。 导读过去几年以来,机器学习已经开始以前所未有的方式步入主流层面。这种趋势并非单纯由低成本云环境乃至极为强大的GPU硬件所推动; 除此之外,面向机器学习的可用框架也迎...

    OpenDigg 评论0 收藏0
  • Python入门-Python简介

    摘要:年月宣布支持时间延长到年。更详细的发布列表参阅官网的版本号分为三段,形如。其中表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加表示功能更新,出现新功能时增加表示小的改动如修复了某个,只要有修改就增加。年公司正式发布。 < 返回索引页 Python语言简介 Python介绍及发展 介绍 Python 官方网站:https://www.python.org/, 大家可以到此处下...

    Java_oldboy 评论0 收藏0
  • 云计算入门必备90条术语

    摘要:对云术语模糊不清我们可以帮你厘清网站从到的云计算术语表对最流行的云计算术语逐一进行了定义。云计算云计算通过网络通常是互联网交付信息技术服务。云计算常常被称为是一种颠覆性技术。 对云术语模糊不清?我们可以帮你厘清!Solutions Review网站从A到Z的云计算IT术语表对最流行的云计算术语逐一进行了定义。A基于广告的定价模式――这种定价模式将服务低价或免费提供给客户,因广告连同服务提供给...

    BDEEFE 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<