65.9K
CodeProject 正在变化。 阅读更多。
Home

机器学习和 ML.NET 入门 - 第一部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (7投票s)

2019 年 9 月 13 日

CPOL

13分钟阅读

viewsIcon

22686

机器学习和 ML.NET (Machine Learning.NET) 入门

引言

如今,机器学习越来越受欢迎,并在各行各业以及我们的日常生活中得到广泛应用。在本文中,我们将学习如何使用 Microsoft ML.NET (Machine Learning .NET) 开发机器学习应用程序。如果我们对机器学习、机器学习类型和算法有基本了解,那么选择合适的机器学习任务和模型来开发我们的机器学习应用程序将更容易。在本章中,我们将从...

  1. 机器学习入门
  2. 机器学习类型和算法入门
  3. 机器学习为何越来越受欢迎
  4. Microsoft ML.NET 入门
  5. ML.NET 的特性

机器学习入门

机器学习是人工智能(AI)的一部分,它使用算法和统计技术来训练系统,而无需使用任何显式程序。机器学习用于自动训练系统并为我们提供系统预测的结果。在机器学习中,我们需要提供大量数据来进行训练和预测结果。在机器学习 2 中,常用的词是 参考

  • 培训
  • Data

为了理解训练和数据,让我们看一个现实生活中的例子:当一个新生儿出生时,父母、老师和邻居会通过展示物体来教导孩子。我们可以说,父母第一次教婴儿认识一个苹果,并且会反复告诉婴儿这是苹果,苹果的颜色是红色的,苹果的形状是这样的。这里的苹果就是孩子的数据,孩子的大脑被训练成知道苹果是红色的,苹果看起来是这样的,苹果有不同的形状和颜色。一旦婴儿的大脑被训练好识别这个物体,当婴儿看到苹果时,她/他会立即说出这是苹果。

就像第一次通过展示物体来训练婴儿一样,我们用大量数据来训练机器,以预测并为我们返回结果。为了训练机器,我们需要大量数据。通过向机器提供大量相关数据,机器将得到良好的训练,并能准确地预测结果。我们可以将下面的图像作为数据的示例,例如,让我们考虑训练机器来预测数字并显示结果。在这里,我们使用图像作为数据,并且可以看到用不同字体创建的不同数字“2”,也使用了手绘。所有这些数字“2”都会作为数据提供给机器,并训练机器来预测结果。

再次,你们都会好奇训练和我们如何训练机器,对于这一点,在机器学习中,我们有机器学习任务和算法。正如我们已经知道的,机器学习不需要我们编写任何显式程序,因为我们将使用机器学习算法来预测结果。现在我们将看到一些机器学习类型和算法。

机器学习过程

在下图,我们可以看到机器学习过程被解释为:首先我们将数据输入系统,然后选择合适的机器学习模型来训练系统。训练完成后,机器就可以预测结果并向外界展示输出了。

机器学习类型和算法入门

在机器学习中,类型和算法非常重要。如果我们想开发机器学习应用程序,那么我们应该理解什么是机器学习类型,以及应该为我们的应用程序选择哪种类型和算法来训练和预测结果。本文重点介绍使用监督学习和无监督学习这两种机器学习类型,我们将详细介绍两种主要的机器学习类型,它们是:

  • 监督学习
  • 无监督学习

我们将通过示例来介绍监督和无监督机器学习类型和算法。

从上图,我们可以看到一些机器学习类型和算法及其示例,例如每种机器学习类型和算法可以在哪种类型的应用程序中使用。在本文中,我们将使用带有回归和分类模型的监督学习,以及带有聚类模型的无监督类型。现在让我们详细了解每种机器学习类型和算法。

监督学习

在监督学习中,计算机将获得带标签的输入和期望的输出。首先,我们将通过一个例子来使用回归模型进行按城市预测房价,为此,我们将提供特定城市的房屋详细信息,包括城市名称、区域名称、房屋类型、楼层详情、房间数和房屋租金。

在上图中,我们可以理解三种不同类型房屋的信息,如独栋房屋、别墅型和公寓型,以及房间数信息。这些都不是特定城市房屋的确切价格,而是用于方便理解概念的示例房屋类型和价格。正如从上图可以看出,我们可以轻松理解该城市特定区域的当前房价。所有这些城市名称、区域名称、房屋类型、楼层详情、房间数和房屋租金信息将被作为输入提供给机器,以预测用户搜索的房屋租金。当我们搜索房屋时,我们将提供城市名称、区域名称、所需的房间数、房屋类型以及我们正在寻找的预算作为输入。这里,预算是我们搜索的关键关键字,我们在搜索中期望的输出将是搜索结果的房屋租金。在这里,对于机器学习的监督类型和回归模型,我们将房屋租金作为带标签的输入。我们使用所有输入和带标签的输入来训练机器。训练后,机器将使用回归算法预测结果,并为我们提供预测结果,即房屋租金。

如果用户在 Maura 市 Annanagar 区域搜索带有 3 个房间、公寓类型的房屋租金,并且所有数据都已提供给机器,机器将预测结果并显示大约 15000 的输出。在机器学习中,我们需要提供大量数据。

在监督学习中,还会使用一个模型,即 **分类模型**。分类模型将用于邮件垃圾邮件检测和情感预测。

无监督学习

在无监督学习中,计算机将获得没有期望输出的输入。该模型的主要目的是找到输入中的结构。

在无监督学习中,我们有 **聚类模型**。聚类模型可用于查找我们产品的客户细分集群。例如,我们可以将客户细分作为我们产品销售的示例。假设我们有“ABC”、“XYZ”和“123”这三种不同的产品,并且我们在德里、孟买、加尔各答和钦奈这四个主要城市销售这些产品。我们对这四个城市的这三种产品的销售历史进行分组,并想找到我们产品的集群,在这种情况下,我们可以使用无监督学习和聚类模型。

机器学习为何越来越受欢迎?

如今,机器学习在我们的日常生活中、许多行业、研究领域、科学等领域得到了广泛应用。机器学习也用于自动化系统,例如我们可以看到邮件垃圾邮件检测和欺诈检测。机器学习在我们日常生活中,我们可以将 Facebook 新闻提要作为一个例子,我们会在 Facebook动态中看到与我们经常或最近访问的朋友帖子相关的所有新闻提要。Facebook 使用机器学习概念来处理新闻提要。机器学习如今也广泛应用于制造业、医疗保健、金融服务、旅游、零售等行业。机器学习也用于制造无人驾驶汽车(即自动驾驶汽车)。在自动驾驶汽车中,传感器用于识别所有四个方向上靠近的物体,根据物体,汽车速度将被控制,并且使用导航,自动驾驶汽车将到达目的地。在导航中,所有信息都将作为交通地点和当前交通信号存储。对于自动驾驶汽车,将使用机器学习的强化学习类型。机器学习现在也广泛应用于研究和医疗领域,例如预测艾滋病中的病毒衰竭、帕金森病进展预测、智能农业、生物技术用于药物开发、医疗疗法、用于宇宙地图等。

未来,机器学习将在所有领域得到广泛应用,其受欢迎程度将超过今天。

我们已经了解了机器学习如今为何以及如何变得越来越受欢迎,Microsoft 也于 2018 年 3 月的 Build 大会期间推出了一款名为 ML.NET 的新框架。ML.NET 代表 Machine Learning.Net,用于使用 .NET 开发机器学习应用程序——我们将在接下来的章节中了解有关 ML.NET 的更多详细信息。

Microsoft ML.NET 入门

Microsoft 在 2018 年 3 月的 Build 大会上推出了 ML.NET (Machine Learning.NET)。ML.NET 的当前版本是 ML.NET preview 1.4,于 2019 年 9 月 发布。Machine Learning.Net 是一个跨平台且开源的框架。是的,现在可以使用机器学习框架轻松开发自己的机器学习应用程序或开发自定义模块。对于所有 .NET 用户来说,这是一个好消息,因为我们可以使用 C# 或 F# 代码来开发使用 ML.NET 的机器学习。ML.NET 是开源的,可以在 Windows、Linux 和 macOS 上开发和运行。我们可以使用 ML.NET 为控制台、桌面、Web、移动、游戏和物联网开发自定义机器学习模型。ML.NET 还支持扩展并与 TensorFlow、Accord.NET 和 CNTK 配合使用。ML.NET 的最新版本还支持从关系数据库(如 SQL Server、Oracle、MySQL 等)加载和训练数据。ML.NET 的最新版本还通过 AutoML 实现了易于开发自定义 ML。

目前,Microsoft 已发布 ML.NET 的预览版本,并且 Microsoft 持续为 ML.NET 框架添加更多功能,ML.NET 的当前版本是 ML.NET 1.4。

在开始使用 ML.NET 之前,让我们先了解一下开发机器学习应用程序所需的基本 ML.NET 概念。

  • 加载数据:为了完美预测结果,我们需要提供大量数据来训练模型。在 ML.Net 中,我们可以通过文本(CSV/TSV、关系数据库(现支持 SQL Server、Oracle、MySQL 等))、BinaryIEnumerable 等方式提供训练和测试数据。
  • 训练:我们需要根据我们的需求选择正确的算法来训练模型,我们需要选择正确的算法来训练和预测结果。
  • 评估:为我们的模型训练和预测选择机器学习类型。如果您需要处理细分,可以选择聚类模型;如果您需要预测股票价格,可以选择回归;如果您需要进行情感分析,可以选择分类模型。
  • 预测结果:基于训练和测试数据以及训练好的模型,最终的预测将通过 ML.NET 应用程序显示。训练好的模型将保存为二进制格式,也可以集成到我们的其他 .NET 应用程序中。

上图解释了使用 ML.NET 开发机器学习应用程序的流程。接下来,我们将更详细地了解 ML.NET 组件。

ML.NET 的特性

现在让我们看看 Microsoft ML.NET 的一些用途和特性。

  • 所有 .NET 用户都可以使用 ML.NET 编写机器学习代码。
  • 您可以使用 C# 或 F# 来编写 ML.NET 代码。
  • ML.NET 是一个跨平台且开源的框架。
  • ML.NET 可以在 Windows、Linux 和 macOS 上开发和运行。
  • 广泛应用于 Microsoft Windows、Bing、Azure,并且可扩展到 TensorFlow、CNTK 和 Accord.NET 等其他框架。
  • ML.NET 支持为 Web、移动、桌面、游戏和物联网开发机器学习应用程序。
  • ML.NET 将训练好的模型保存为二进制文件,并且可以集成到任何其他 .NET 应用程序中。
  • ML.NET 目前处于预览版本,Microsoft 正在积极添加许多新功能,并且计划添加对 TensorFlow 和 CNTK 的深度学习。
  • ML.NET 预览版本 0.2 引入了新的机器学习聚类任务。
  • ML.NET 预览版本 0.5 添加了 TensorFlow 模型评分转换。
  • ML.NET 预览版本 0.6 增加了对评分预训练 ONNX 模型的能力。
  • 从 ML.NET 0.7 版本开始,它同时支持 x86 和 x64。ML.NET 目前处于预览版本,Microsoft 正在不断更新版本,为 ML.NET 添加更多功能。之前的 ML.NET 0.7 版本仅支持为 x64 开发,但从新的 ML.NET 0.7 版本开始,它支持为 x86 和 x64 开发。
  • ML.NET 预览版本 0.7 支持实验性的 Python 绑定,称为 NimbusML。
  • ML.NET 预览版本 0.7 启用了异常检测场景。
  • ML.NET 预览版本 0.9 添加了一些 ML.NET API 改进。
  • ML.NET 1.0 添加了自动化机器学习 (AutoML),并引入了一些新工具,如 ML.NET CLI 和 ML.NET Model Builder。
  • ML.NET 1.1 版本已发布,改进了对 IDataView 中内存中图像类型的支持,并添加了一种新的算法:异常检测算法。
  • ML.NET 1.2 版本已发布,支持通过 Microsoft.Extensions.ML 集成包将 ML.NET 模型集成到 Web 或无服务器应用程序中。
  • ML.NET 预览版本 1.4 提供了数据库加载器,使得使用关系数据库进行训练更加容易。

参考链接

关注点

ML.NET 预览版 1.4 是今天的当前发布版本(2019 年 9 月)。Microsoft 持续通过添加更多功能来更新 ML.Net,因此请务必检查最新更新,并等待完整 ML.NET 版本发布。在下一部分中,我们将通过最新的发布版本和功能来学习如何针对每种模型和算法使用 ML.NET。希望大家从第一部分了解了机器学习和 ML.NET 的概念,在下一部分中,我们将深入探讨 ML.NET 入门。

历史

  • 2019/09/14: 初始发布
© . All rights reserved.