在人工智能领域,无论是机器学习,还是深度学习等,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. GET 与 POST 其实没有什么区别

    GET 与 POST 其实没有什么区别 本文写于 2020 年 12 月 30 日 GET 与 POST 是两种 HTTP 方法,并且是最常用的两种. 今天在使用 Postman 测试 api 的时候 ...

  2. 群晖下 gitea+drone+harbor实现CI/CD 发布到云服务器

    常用命令 sudo -i然后输入密码登录root账户(群晖默认只能使用admin账号登陆) vim xxx编辑(编辑是进去之后按i,退出并保存是按esc,然后:wq!再回车) mkdir xx创建文件 ...

  3. 负载均衡之LVS的三种模式

    模式一:D-NAT模式 原理:此模式类似NAT网络中,所以此网络内主机发到互联网上的数据包的源目的IP都是NAT路由的IP,在NAT路由上做了IP替换. 把客户端发来的数据的IP头的目的地址在负载均衡 ...

  4. 彰显个性│github和gitlab之自定义首页样式

    目录 一.个性首页 二.制作步骤 三.修改内容 一.个性首页 相信很多小伙伴在逛 github 和 gitlab 的时候 会发现很多开发者的首页异常的炫酷,如 https://github.com/c ...

  5. 渗透测试之sql注入验证安全与攻击性能

    由于渗透测试牵涉到安全性以及攻击性,为了便于交流分享,本人这里不进行具体网址的透露了. 我们可以在网上查找一些公司官方网站如(http://www.XXXXXX.com/xxxx?id=1) 1.拿到 ...

  6. 论文阅读 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning

    6 dyngraph2vec: Capturing Network Dynamics using Dynamic Graph Representation Learning207 link:https ...

  7. Acwing 428

    可以找到规律,将第 N 项的 N 对应的二进制表示,转换为以 k 为基底的数即可. N=1=1 ----> 1 ----> \(a^b\) N=2=2 ----> 10 ----&g ...

  8. npm切换到国内华为云的镜像

    npm下载包很慢?不能忍,切换到国内华为云的镜像吧. npm config set registry https://repo.huaweicloud.com/repository/npm/ npm ...

  9. 1.2 操作系统的第二个功能——并发功能 -《zobolの操作系统学习札记》

    1.2 操作系统的第二个功能--并发功能 目录 1.2 操作系统的第二个功能--并发功能 问1:什么是并发功能?并发功能是必要的吗? 问2:并发功能必须要求拥有多核CPU吗? 问3:多核CPU和单核C ...

  10. 我熬夜开发了一款简约实用、支持多平台的Markdown在线编辑器(开源)

    前言 之前,一直想开发一款属于自己的Markdown编辑器,主要是自己平常写文章可以更加灵活操作,另外扩宽自己的视野也是非常不错的选择啊!所以在周末就决定玩耍一番.首先我调研了很多线上热门的md编辑器 ...