• ML.NET相关资源整理


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

  • 相关阅读:
    国产猫罐头可以作为长期主食吗?口碑好的顶级猫罐头推荐
    Java 中代码优化的 30 个小技巧(中)
    Spring的注入
    一文带你搞懂 FreeRTOS 实时操作系统
    uniapp中easycom用法详解
    K8s Error: ImagePullBackOff 故障排除
    verilog 等价操作符
    G-002 波峰焊与回流焊的区别
    分布式文件存储系统FastDFS[2]-上传和下载文件工具类
    神经网络中的优化方法
  • 原文地址:https://www.cnblogs.com/shengshengwang/p/16530960.html