3

ML.NET相关资源整理 - 阿升1990

 2 years ago
source link: https://www.cnblogs.com/shengshengwang/p/16530960.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

  在人工智能领域,无论是机器学习,还是深度学习等,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)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK