在人工智能领域,无论是机器学习,还是深度学习等,Python编程语言都是绝对的主流,尽管底层都是C++实现的,似乎人工智能和C#/F#编程语言没什么关系。在人工智能的工程实现,通常都是将Python训练好的人工智能模型封装为REST API,以供其它的系统调用。虽然C#也确实天生就不合适搞人工智能的训练等,但是通过ML.NET这个开放源代码的跨平台机器学习框架,可以很容易的将人工智能集成到Web、移动、桌面、游戏和物联网应用中。这篇文章主要总结ML.NET的相关学习资源。

一.ML.NET模型生成器和CLI

  什么是机器学习呢?它的本质就是发现数据中的模式,模式以模型为载体,从而预测新的数据。通常会经过模型的选择,数据的清洗,数据的加载,模型训练,模型评估,模型测试,模型部署等几个阶段。但是,根据实际情况选择合适的模型,以及对数据的清洗都很是需要经验的。

1.ML.NET模型生成器

  模型生成器(Model Builder)算是一个低代码的机器学习平台,可以通过图形界面实现数据加载、模型训练、模型评估和模型部署等功能,并且还支持强大的AutoML,从而可以获得最适合解决方案的模型。相当于是极大的降低了人工智能模型的训练门槛。



2.ML.NET CLI

  除了模型生成器外,还提供了ML.NET CLI这个.NET Core工具。可为其指定一个机器学习任务和一个训练数据集,而它将生成一个ML.NET模型以及要运行的C#代码,以便在应用程序中使用该模型。

二.ML.NET中的机器学习任务

1.二元分类任务

二元分类是有监督学习,顾名思义就是有2个类别的分类任务。训练器如下:

AveragedPerceptronTrainer
SdcaLogisticRegressionBinaryTrainer
SdcaNonCalibratedBinaryTrainer
SymbolicSgdLogisticRegressionBinaryTrainer
LbfgsLogisticRegressionBinaryTrainer
LightGbmBinaryTrainer
FastTreeBinaryTrainer
FastForestBinaryTrainer
GamBinaryTrainer
FieldAwareFactorizationMachineTrainer
PriorTrainer
LinearSvmTrainer

2.多类分类任务

多类分类是有监督学习,顾名思义就是有多个类别的分类任务。训练器如下:

LightGbmMulticlassTrainer
SdcaMaximumEntropyMulticlassTrainer
SdcaNonCalibratedMulticlassTrainer
LbfgsMaximumEntropyMulticlassTrainer
NaiveBayesMulticlassTrainer
OneVersusAllTrainer
PairwiseCouplingTrainer

3.回归测试任务

回归就是从一组相关特征中预测标签值。训练器如下:

LbfgsPoissonRegressionTrainer
LightGbmRegressionTrainer
SdcaRegressionTrainer
OlsTrainer
OnlineGradientDescentTrainer
FastTreeRegressionTrainer
FastTreeTweedieTrainer
FastForestRegressionTrainer
GamRegressionTrainer

4.聚类分析任务

聚类分析是无监督学习,简单理解就是从没有标签的数据中心,发现数据的模式种类。训练器如下:

KMeansTrainer

5.异常检测任务

异常检测就是对罕见事件的预测,比如地震预测等。训练器如下:

RandomizedPcaTrainer

6.排序任务

排序就是对数据记录进行排名,比如看到的搜索引擎中的搜索条目。训练器如下:

LightGbmRankingTrainer
FastTreeRankingTrainer

7.推荐任务

就是推荐算法,比如推荐User、Item和Tag等,在电商、社交、短视频中等都有广泛的应用。训练器如下:

MatrixFactorizationTrainer

8.预测任务

使用过去的时序数据来预测将来的行为。比如,天气预测、季节性销售预测和预测维护等。训练器如下:

ForecastBySsa

9.图像分类任务

图像分类是有监督学习,就是从有标记的图像中训练模型,然后预测图像的类别。训练器如下:

ImageClassificationTrainer

10.物体检测任务

就是图片对象的检测,比如车牌、行人、红绿灯等。不过目前对象检测模型训练仅适用于使用Azure机器学习的Model Builder。

三.ML.NET API v1.7.0[1]

1.Microsoft.Extensions.MLNamespace

解析:用于扩展ML.NET API的实用工具,包括预测引擎池。

2.Microsoft.MLNamespace

解析:ML.NET的主命名空间。包含应用程序和操作上下文、转换器和训练器目录以及用于数据视图处理的组件。

3.Microsoft.ML.CalibratorsNamespace

解析:包含用于二元分类校准的组件的命名空间。

4.Microsoft.ML.DataNamespace

解析:包含数据加载和保存、数据架构定义和模型训练指标组件的命名空间。

5.Microsoft.ML.RuntimeNamespace

解析:包含ML.NET运行时所需的类型的命名空间。

6.Microsoft.ML.TimeSeriesNamespace

解析:包含时间序列相关模型的命名空间。

7.Microsoft.ML.TrainersNamespace

解析:包含训练程序、模型参数和实用工具的命名空间。

8.Microsoft.ML.Trainers.FastTreeNamespace

解析:包含快速树算法的训练程序、模型参数和实用工具的命名空间。

9.Microsoft.ML.Trainers.LightGbmNamespace

解析:包含LightGBM算法的训练程序、模型参数和实用工具的命名空间。

10.Microsoft.ML.TransformsNamespace

解析:包含数据转换组件的命名空间。

11.Microsoft.ML.Transforms.ImageNamespace

解析:包含图像加载和转换组件的命名空间。

12.Microsoft.ML.Transforms.OnnxNamespace

解析:包含ONNX模型加载和转换组件的命名空间。

13.Microsoft.ML.Transforms.TextNamespace

解析:包含文本数据转换组件的命名空间。

14.Microsoft.ML.Transforms.TimeSeriesNamespace

解析:包含时序数据转换组件的命名空间。

15.Microsoft.ML.VisionNamespace

解析:包含图像分类组件的命名空间。

四.ML.NET官方例子

1.情绪分析

解析:演示如何使用ML.NET应用二元分类任务。

2.GitHub问题分类

解析:演示如何使用ML.NET应用多类分类任务。

3.价格预测器

解析:演示如何使用ML.NET应用回归任务。

4.Iris聚类分析

解析:演示如何使用ML.NET应用聚类分析任务。

5.推荐

解析:根据以前的用户评级生成影片推荐

6.图像分类

解析:展示了如何将现有TensorFlow模型重新训练为使用ML.NET创建自定义图像分类器。

7.异常检测

解析:演示如何构建针对产品销售数据分析的异常检测应用程序。

8.检测图像中的对象

解析:演示如何使用预先训练的ONNX模型检测图像中的对象。

9.对电影评论的情绪分类

解析:了解加载预训练的TensorFlow模型,对电影评论的情绪分类。

五.F#编程语言

  最后再提下F#编程语言,C#语言就不用说了,F#是C#的同门师兄弟了,并且极其擅长算法和并行编程,关键是可以无缝访问所有的第三方.NET库和工具。不过遗憾的是,可能F#太高端了,在我的周围没有见过一个人使用,但是并不能否定F#是一门优秀的编程语言。

  在ML.NET中,不仅可以使用C#编程语言,还可以使用F#编程语言,但是F#的语法还是比较复杂的,可参考的资料[11][12][13]也很少。网上就找到了一本中文的F#书籍《F#语言程序设计》[17],其它的基本都是英文的。如果感兴趣可以下载,尝试下F#编程语言,说不定会有新的惊喜。接下来计划对ML.NET做一个系列的讲解,但是更新不会太快。

参考文献:

[1]ML.NET API参考:https://docs.microsoft.com/zh-cn/dotnet/api/

[2]ML.NET文档:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/

[3]ML.NET教程:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/tutorials/

[4]dotnet/machinelearning-samples:https://github.com/dotnet/machinelearning-samples

[5]SciSharp STACK:https://github.com/SciSharp

[6]SciSharp/TensorFlow.NET:https://github.com/SciSharp/TensorFlow.NET

[7]Azure机器学习文档:https://docs.microsoft.com/zh-cn/azure/machine-learning/

[8]Azure认知服务文档:https://docs.microsoft.com/zh-cn/azure/cognitive-services/

[9].NET for Apache Spark文档:https://docs.microsoft.com/zh-cn/dotnet/spark/

[10].NET文档:https://docs.microsoft.com/zh-cn/dotnet/

[11]FsLab:https://fslab.org/tutorials.html

[12]F#文档:https://docs.microsoft.com/zh-cn/dotnet/fsharp/

[13]F#软件基金:https://fsharp.org/

[14]Q&A ML.NET:https://docs.microsoft.com/en-us/answers/topics/dotnet-mlnet.html

[15]Machine Learning at Microsoft with ML.NET:https://arxiv.org/pdf/1905.05715.pdf

[16]机器学习重要术语词汇表:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/resources/glossary

[17]《F#语言程序设计》:https://url39.ctfile.com/f/2501739-627693806-97f8da?p=2096 (访问密码: 2096)

ML.NET相关资源整理的更多相关文章

  1. AngularJS的学习网站及相关资源整理

    学习angularjs的网站及相关资源的整理,会不断更新. angularJs的官网:https://angularjs.org/       API文档:https://docs.angularjs ...

  2. .NET中使用Memcached的相关资源整理

    Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载:http://code.jellycan.com/memca ...

  3. .NET中使用Memcached的相关资源整理(转)

    Memcached官方站点:http://www.danga.com/memcached/ Memcached Win32 1.2.6下载:http://code.jellycan.com/memca ...

  4. Bootstrap 小技巧以及相关资源整理

    1, Bootstrap Bundle (http://bootstrapbundle.com/): 提供了15中不同的MVC  Bootstrap模板.[扩展和更新]中搜索“Bootstrap Bu ...

  5. MVC5学习相关资源整理

    1  官方 Getting Started http://www.asp.net/mvc/tutorials/mvc-5/introduction/getting-started 英文不好,英文好的同 ...

  6. QT 相关资源(书籍、论坛、博客等。。。)整理

     QT 相关资源(书籍.论坛.博客等...)整理... 中文名:<提问的智慧> 英文名:How To Ask Questions The Smart Way 中文链接1:http://ww ...

  7. 【转】本人常用资源整理(ing...)

    Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习) ...

  8. DIP常用资源整理

    Deep Learning(深度学习): ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一 ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习) ...

  9. 关于OpenStack的学习路线及相关资源汇总

    首先我们想学习openstack,那么openstack是什么?能干什么?涉及的初衷是什么?由什么来组成?刚接触openstack,说openstack不是一个软件,而是由多个组件进行组合,这是一个更 ...

随机推荐

  1. URL 是什么?

    URL 是什么? 本文写于 2020 年 5 月 16 日 URL 是什么?天天听到人家说到这个名词,那它到底是什么? URL 是统一资源定位符,Uniform Resource Locator. 俗 ...

  2. Base64隐写

    0x00: 前言 Base64编码的作用: 将一些特殊的字符转换成常见的字符.特殊的字符可能是不可见字符或者是大于ascii码127的,将其变成常见的字符(在base64中为a~z A~Z 0~9 + ...

  3. AC自动机:Tire树+KMP

    简介 AC自动机是一个多模式匹配算法,在模式匹配领域被广泛应用,举一个经典的例子,违禁词查找并替换为***.AC自动机其实是Trie树和KMP 算法的结合,首先将多模式串建立一个Tire树,然后结合K ...

  4. Java实现飞机大战游戏

    飞机大战详细文档 文末有源代码,以及本游戏使用的所有素材,将plane2文件复制在src文件下可以直接运行. 实现效果: 结构设计 角色设计 飞行对象类 FlyObject 战机类 我的飞机 MyPl ...

  5. SAM[详细~bushi]

    基础性质概念 后缀自动机:S的SAM是个DAG,每个节点叫状态,每条带字符ch边表示+ch转移,从开始节点往下,任何一条路径都会对应一个S的子串. 不过为什么要叫"后缀"自动机呢? ...

  6. Typecho博客转移服务器,数据备份.

    目录 Typecho博客转移服务器,数据备份. 简述操作(有基础的mjj看这个简述就可以了.) 详细步骤(建议小白来看, 已经在很多详细方面进行说明了.) 备份篇 备份导入与数据库转移篇 重新部署ty ...

  7. MySQL数据库5

    内容概要 pyhton操作MySQL SQL注入问题 修改表SQL语句补充 视图.触发器.储存过程 事务 流程控制 函数 索引与慢查询优化 内容详情 pyhton操作MySQL python中支持操作 ...

  8. 前端3JS2

    内容概要 运算符 流程控制 三元运算符 函数 自定义对象 内置对象 JSON对象 正则对象 内容详情 运算符

  9. 工作流引擎之Elsa入门系列教程之一 初始化项目并创建第一个工作流

    引子 工作流(Workflow)是对工作流程及其各操作步骤之间业务规则的抽象.概括描述. 为了实现某个业务目标,需要多方参与.按预定规则提交数据时,就可以用到工作流. 通过流程引擎,我们按照流程图,编 ...

  10. TypeScript 泛型(generic) 入门介绍

    TypeScript 泛型函数 下面来创建第一个使用泛型的例子:identity函数.这个函数会返回任何传入它的值.你可以把这个函数当成是echo命令.不用泛型的话,这个函数可能是下面这样: func ...