微软在Build 2018大会上推出的一款面向.NET开发人员的开源,跨平台机器学习框架ML.NET。 ML.NET将允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学习语言(如R和Python)开发的模型,并将它们集成到用C#等语言编写的企业应用程序中需要付出相当大的努力。ML.NET填平了机器学习专家和软件开发者之间的差距,从而使得机器学习的平民化,即使没有机器学习背景的人们能够建立和运行模型。通过为.NET创建高质量的机器学习框架,微软已经使得将机器学习转化为企业(或通过Xamarin移动应用程序)变得更容易。这是一种使机器学习更加可用的形式。

使用ML.NET可以解决哪些类型的问题?

基于微软内部Windows,Bing和Azure等主要微软产品使用多年的机器学习构建的库目前处于预览阶段,最新版本是0.2 。该框架目前支持的学习模型包括

  • K-Means聚类
  • 逻辑回归
  • 支持向量机
  • 朴素贝叶斯
  • 随机森林
  • 增强树木

其他技术,如推荐引擎和异常检测,正在开发的路线图上。ML.NET将最终将接口暴露给其他流行的机器学习库,如TensorFlow,CNTK和Accord.NET。最后,还会有一些工具和语言增强功能,包括Azure和GUI / Visual Studio功能中的扩展功能。

如何在应用程序中使用ML.NET?

ML.NET以NuGet包的形式提供,可以轻松安装到新的或现有的.NET应用程序中。

该框架采用了用于其他机器学习库(如scikit-learnApache Spark MLlib)的“管道(LearningPipeline)”方法。数据通过多个阶段“传送”以产生有用的结果(例如预测)。典型的管道可能涉及

  1. 加载数据
  2. 转换数据
  3. 特征提取/工程
  4. 配置学习模型
  5. 培训模型
  6. 使用训练好的模型(例如获得预测)

管道为使用机器学习模型提供了一个标准API。这使得在测试和实验过程中更容易切换一个模型。它还将建模工作分解为定义明确的步骤,以便更容易理解现有代码。scikit-learn库实现了很多机器学习算法,我们可以多多参考scikit-learn :http://sklearn.apachecn.org/cn/0.19.0/index.html

ML.NET机器学习管道的核心组件:

  • ML数据结构(例如IDataViewLearningPipeline

  • TextLoader(将数据从分隔文本文件加载到LearningPipeline)和 CollectionDataSource 从一组对象中加载数据集

  • 转换(以获得正确格式的数据进行训练):

    • 处理/特征化文本: TextFeaturizer
    • 架构modifcation: ,ColumnConcatenatorColumnSelectorColumnDropper
    • 使用分类特征:CategoricalOneHotVectorizerCategoricalHashOneHotVectorizer
    • 处理丢失的数据: MissingValueHandler
    • 过滤器:RowTakeFilterRowSkipFilterRowRangeFilter
    • 特性选择:FeatureSelectorByCountFeatureSelectorByMutualInformation
  • 学习算法(用于训练机器学习模型)用于各种任务:

    • 二元分类:FastTreeBinaryClassifierStochasticDualCoordinateAscentBinaryClassifierAveragedPerceptronBinaryClassifierBinaryLogisticRegressorFastForestBinaryClassifierLinearSvmBinaryClassifier,和GeneralizedAdditiveModelBinaryClassifier
    • 多类分类:StochasticDualCoordinateAscentClassifierLogisticRegressor,和NaiveBayesClassifier
    • 回归:FastTreeRegressorFastTreeTweedieRegressorStochasticDualCoordinateAscentRegressorOrdinaryLeastSquaresRegressorOnlineGradientDescentRegressorPoissonRegressor,和GeneralizedAdditiveModelRegressor
    • 聚类 KMeansPlusPlusClusterer
  • 评估器(检查模型的工作情况):

    • 对于二元分类: BinaryClassificationEvaluator
    • 对于多类分类: ClassificationEvaluator
    • 对于回归: RegressionEvaluator

在构建机器学习模型时,首先需要定义您希望通过数据实现的目标。之后,您可以针对您的情况选择正确的机器学习任务。以下列表描述了您可以选择的不同机器学习任务以及一些常见用例。在ML.NET 0.2增加了一个 支持从一组对象中加载数据集的能力,以前这些只能从分隔的文本文件加载。另一个补充是交叉验证,这是一种验证机器学习模型性能的方法。交叉验证方法的一个有用方面是它不需要与用于创建模型的数据集分开的数据集。相反,它将多次提供的数据划分为不同组的训练和测试数据。ML.NET 0.2加入了一个示例代码库,演示了如何使用这个新框架,地址是https://github.com/dotnet/machinelearning-samples

二元分类

二元分类属于 监督学习,用于预测数据的一个实例属于哪些两个类(类别)任务。分类算法的输入是一组标记示例,其中每个标记都是0或1的整数。二进制分类算法的输出是一个分类器,您可以使用该分类器来预测新的未标记实例的类。二元分类场景的例子包括:

  • 将Twitter评论的情绪理解为“积极”或“消极”。

  • 诊断患者是否患有某种疾病。

  • 决定将电子邮件标记为“垃圾邮件”。

  • 如果交易日是上涨日或下跌日
  • 手写数字识别
  • 语音识别
  • 图像识别

有关更多信息,请参阅Wikipedia上的二元分类 文章。

多类分类

多元分类属于 监督学习,用于预测的数据的实例的类(类别)的任务。分类算法的输入是一组标记示例。每个标签都是0到k-1之间的整数,其中k是类的数量。分类算法的输出是一个分类器,您可以使用它来预测新的未标记实例的类。多类分类方案的例子包括:

  • 确定一只狗的品种为“西伯利亚雪橇犬”,“金毛猎犬”,“贵宾犬”等。
  • 将电影评论理解为“正面”,“中性”或“负面”。
  • 将酒店评论归类为“位置”,“价格”,“清洁度”等。

有关更多信息,请参阅Wikipedia上的多类分类文章。

分类步骤设置:

  1. 首先定义问题
  2. 然后,您将以名为Features的数字属性的形式表示您的数据。这对于已经分类的训练数据和将来需要分类的测试数据都是这样做的
  3. 您将获取训练数据并将其输入分类算法以训练模型
  4. 将需要分类的新实例或采取测试数据并将其传递给分类器进行分类

聚类

聚类属于无监督机器学习,用于数据的一组实例为包含类似特征的簇的任务。聚类还可用于识别数据集中的关系,这些关系可能不是通过浏览或简单观察而在逻辑上得出的。聚类算法的输入和输出取决于所选择的方法。您可以采用分布、质心、连通性或基于密度的方法。ML.NET目前支持使用K-Means聚类的基于质心的方法。聚类场景的例子包括:

  • 根据酒店选择的习惯和特点了解酒店客人群体。
  • 识别客户群和人口统计信息,以帮助构建有针对性的广告活动。
  • 根据制造指标对库存进行分类。
  • 根据房屋类型,价值和地理位置确定一组房屋
  • 地震震中确定危险区域
  • 使用集群将电话塔放在一个新城市中,以便所有用户都能获得最佳单一强度

聚类设置步骤:

  1. 你会从问题陈述开始,问题陈述是需要聚集的数据集
  2. 然后,您将使用功能在该数据集中表示点。
  3. 这里没有训练这一步,不需要学习
  4. 您直接将数据提供给聚类算法以查找最终的聚类,而无需任何训练步骤

回归

回归是 监督的机器学习,用于从一组相关的功能预测标签的值。标签可以具有任何实际价值,并且不像分类任务那样来自有限的一组值。回归算法对标签对其相关特征的依赖性进行建模,以确定标签随着特征值的变化而如何变化。回归算法的输入是一组具有已知值标签的示例。回归算法的输出是一个函数,您可以使用该函数来预测任何新的输入要素集的标注值。回归情景的例子包括:

  • 根据房屋属性(如卧室数量,位置或大小)预测房价。
  • 根据历史数据和当前市场趋势预测未来股价。
  • 根据广告预算预测产品的销售情况。

异常检测(即将推出

排名(即将推出

推荐(即将推出

欢迎大家关注微信号opendotnet,微信公众号名称:dotNET跨平台。公众号文章汇总网站 http://www.csharpkit.com

开源的,跨平台的.NET机器学习框架ML.NET的更多相关文章

  1. 一个开源的,跨平台的.NET机器学习框架ML.NET

    微软在Build 2018大会上推出的一款面向.NET开发人员的开源,跨平台机器学习框架ML.NET. ML.NET将允许.NET开发人员开发他们自己的模型,并将自定义ML集成到他们的应用程序中,而无 ...

  2. 机器学习框架ML.NET学习笔记【4】多元分类之手写数字识别

    一.问题与解决方案 通过多元分类算法进行手写数字识别,手写数字的图片分辨率为8*8的灰度图片.已经预先进行过处理,读取了各像素点的灰度值,并进行了标记. 其中第0列是序号(不参与运算).1-64列是像 ...

  3. 机器学习框架ML.NET学习笔记【3】文本特征分析

    一.要解决的问题 问题:常常一些单位或组织召开会议时需要录入会议记录,我们需要通过机器学习对用户输入的文本内容进行自动评判,合格或不合格.(同样的问题还类似垃圾短信检测.工作日志质量分析等.) 处理思 ...

  4. 机器学习框架ML.NET学习笔记【2】入门之二元分类

    一.准备样本 接上一篇文章提到的问题:根据一个人的身高.体重来判断一个人的身材是否很好.但我手上没有样本数据,只能伪造一批数据了,伪造的数据比较标准,用来学习还是蛮合适的. 下面是我用来伪造数据的代码 ...

  5. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  6. 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)

    一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...

  7. 机器学习框架ML.NET学习笔记【6】TensorFlow图片分类

    一.概述 通过之前两篇文章的学习,我们应该已经了解了多元分类的工作原理,图片的分类其流程和之前完全一致,其中最核心的问题就是特征的提取,只要完成特征提取,分类算法就很好处理了,具体流程如下: 之前介绍 ...

  8. 机器学习框架ML.NET学习笔记【7】人物图片颜值判断

    一.概述 这次要解决的问题是输入一张照片,输出人物的颜值数据. 学习样本来源于华南理工大学发布的SCUT-FBP5500数据集,数据集包括 5500 人,每人按颜值魅力打分,分值在 1 到 5 分之间 ...

  9. 机器学习框架ML.NET学习笔记【8】目标检测(采用YOLO2模型)

    一.概述 本篇文章介绍通过YOLO模型进行目标识别的应用,原始代码来源于:https://github.com/dotnet/machinelearning-samples 实现的功能是输入一张图片, ...

随机推荐

  1. Tournament ZOJ - 4063 (青岛区域赛 F 打表)

    打表题.. 规律是找出来了 奈何优化不了 .... #include <iostream> #include <cstdio> #include <sstream> ...

  2. 【XSY2528】道路建设 LCT 可持久化线段树

    题目描述 给你一个\(n\)个点\(m\)条边图,\(q\)个询问,每次问你边权在\([l,r]\)之间的边组成的最小生成树(森林)的边权和.强制在线. \(n,m,q\leq 100000\) 题解 ...

  3. pax3 quick start guide

    pax3 quick start guide 外观图: 配置:1 * pax3 主机:2 * 吸嘴(一个平的,一个凸的):2 * 底盖(一个烟草的,一个烟膏的):3 * 过滤片:1 * USB充:1 ...

  4. 【HDU4947】GCD Array (莫比乌斯反演+树状数组)

    BUPT2017 wintertraining(15) #5H HDU- 4947 题意 有一个长度为l的数组,现在有m个操作,第1种为1 n d v,给下标x 满足gcd(x,n)=d的\(a_x\ ...

  5. Android 性能优化提示

    原文 http://developer.android.com/guide/practices/design/performance.html 性能优化 Android应用程序运行的移动设备受限于其运 ...

  6. python查找字符串所有子串

    https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1] for x in range(len(s) ...

  7. [ZJOI2015]地震后的幻想乡(期望+dp)

    题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...

  8. Spring Cloud下基于OAUTH2认证授权的实现

    GitHub(spring -boot 2.0.0):https://github.com/bigben0123/uaa-zuul 示例(spring -boot 2.0.0): https://gi ...

  9. 【SFA官方翻译】Spring WebFlux和Spring Cloud进行响应式微服务开发

    源码,修正一些错误: https://github.com/bigben0123/sample-spring-cloud-webflux 原创 SpringForAll社区 2018-05-18 作者 ...

  10. 【洛谷P1303 A*B Problem】

    题目描述 求两数的积. 输入输出格式 输入格式: 两行,两个数. 输出格式: 积 输入输出样例 输入样例#1: 1 2 输出样例#1: 2 说明 每个数字不超过10^2000,需用高精 emm,显然本 ...