Python机器学习教程

开发 后端 机器学习
本机器学习教程提供了机器学习的基本和中间概念。它是为完全入门的学生和专业工作人员而设计的。

 

本机器学习教程提供了机器学习的基本和中间概念。它是为完全入门的学生和专业工作人员而设计的。在本教程的最后,您不会成为机器学习方面的专家,但是您将能够制作能够执行复杂任务(例如,预测房屋价格或从尺寸识别虹膜的种类)的机器学习模型。花瓣和萼片的长度。如果您还不是一个完整的初学者,并且对机器学习有所了解,那么我建议您从子主题八开始,即机器学习类型。

在进入本教程之前,您应该熟悉Pandas和NumPy。这对于理解实现部分很重要。以下是我们将在本教程中讨论的子主题:

  •  什么是机器学习?
  •  它与传统编程有何不同?
  •  为什么我们需要机器学习?
  •  机器学习的历史
  •  目前的机器学习
  •  机器学习的特点
  •  机器学习的最佳语言是什么?
  •  机器学习的类型
  •  监督学习
  •  无监督学习
  •  强化学习
  •  机器学习算法
  •  机器学习步骤
  •  机器学习的优势
  •  未来的机器学习

什么是机器学习?

亚瑟·塞缪尔(Arthur Samuel)在1959年创造了“机器学习”一词。他是人工智能和计算机游戏的先驱,并将机器学习定义为“使计算机无需明确编程即可学习的能力的研究领域”。

简而言之,机器学习是人工智能(AI)的一种应用程序,它使程序(软件)可以从经验中学习并提高自己在完成一项任务时的自我,而无需进行明确的编程。例如,您将如何编写一个程序来根据水果的各种属性(例如颜色,形状,大小或任何其他属性)识别水果?

一种方法是对所有内容进行硬编码,制定一些规则并使用它们来识别结果。这似乎是唯一可行的方法,但永远无法制定适用于所有情况的完善规则。使用机器学习可以轻松解决此问题,而无需任何规则,这使其变得更加健壮和实用。您将在接下来的部分中看到我们将如何使用机器学习来完成此任务。

因此,我们可以说,机器学习是通过使机器具有最少的人工干预(即无需显式编程)进行学习的能力,从而使机器的行为和决策更具人性化。现在出现了一个问题,程序如何获得任何经验以及从中学习?答案是数据。数据也被称为机器学习的动力,我们可以肯定地说没有数据就没有机器学习。

您可能想知道,机器学习一词是在1959年引入的,它可以追溯到很久以前,那么为什么直到最近几年都没有提及它?您可能需要注意,机器学习需要巨大的计算能力,大量数据以及能够存储如此庞大数据的设备。我们直到最近才满足所有这些要求并可以练习机器学习。

它与传统编程有何不同?

您是否想知道机器学习与传统编程有何不同?好吧,在传统编程中,我们会将输入数据以及经过良好编写和测试的程序馈入机器中以生成输出。当涉及到机器学习时,在学习阶段,输入数据以及与数据相关联的输出将被馈送到机器中,并为自己制定程序。

如果您不能完全理解这些内容,请不要担心,在接下来的部分中,您将获得更好的理解。

为什么我们需要机器学习?

当今的机器学习具有它所需要的全部注意力。机器学习可以使许多任务实现自动化,尤其是只有人类才能利用其固有的智能来执行的任务。仅在机器学习的帮助下,才能将这种智能复制到机器上。 

在机器学习的帮助下,企业可以自动化日常任务。它还有助于自动化并快速创建数据分析模型。各个行业都依赖大量数据来优化其运营并做出明智的决策。机器学习有助于创建可以处理和分析大量复杂数据以提供准确结果的模型。这些模型精确,可扩展,并且具有更少的周转时间。通过构建这种精确的机器学习模型,企业可以利用有利可图的机会并避免未知的风险。

图像识别,文本生成和许多其他用例正在现实世界中找到应用。这扩大了机器学习专家成为受追捧的专业人员的视野。  

目前的机器学习

在2012年,Alex Krizhevsky,Geoffrey Hinton和Ilya Sutskever发表了有影响力的研究论文,描述了一种可以显着降低图像识别系统错误率的模型。同时,谷歌的X Lab开发了一种机器学习算法,该算法能够自主浏览YouTube视频,以识别包含猫的视频。2016年,AlphaGo(由Google DeepMind的研究人员创建,用于玩中国古代的围棋游戏)在与Lee Sedol的五场比赛中赢得了四场比赛的胜利,Le Sedol是十多年来一直是世界顶级围棋选手。

现在,在2020年,OpenAI发布了GPT-3,这是有史以来功能最强大的语言模型。它可以编写有创意的小说,生成功能代码,撰写周到的业务备忘录等。它的可能用例仅受我们的想象力限制。

机器学习的特点

自动化:如今,您的Gmail帐户中有一个垃圾邮件文件夹,其中包含所有垃圾邮件。您可能想知道Gmail如何知道所有这些电子邮件都是垃圾邮件?这是机器学习的工作。

它可以识别垃圾邮件,因此很容易实现此过程的自动化。自动执行重复任务的能力是机器学习的最大特征之一。大量组织已经在使用基于机器学习的文书工作和电子邮件自动化。

例如,在金融部门,需要执行大量重复,数据繁重和可预测的任务。因此,该行业在很大程度上使用了不同类型的机器学习解决方案。

改善客户体验:对于任何企业而言,提供定制体验和提供更好的服务,是提高参与度,提升品牌忠诚度和建立长期客户关系的最关键方法之一。

机器学习可以帮助我们实现两者。您是否曾经注意到,无论何时打开任何购物网站或在互联网上看到任何广告,它们大多与您最近搜索的内容有关?这是因为机器学习使我们能够做出精确的惊人推荐系统。它们帮助我们定制用户体验。现

在开始使用该服务,如今,大多数公司都拥有一个聊天机器人,可以全天候(24×7)使用。例如,亚航的Eva。这些机器人提供了智能的答案,有时您甚至可能没有注意到自己正在与机器人对话。

自动化数据可视化:过去,我们已经看到公司和个人正在生成大量数据。以Google,Twitter,Facebook等公司为例。他们每天产生多少数据?我们可以使用这些数据并可视化显着的关系,从而使企业能够制定更好的决策,从而使公司和客户都从中受益。

借助用户友好的自动化数据可视化平台(例如AutoViz),企业可以获取大量新见解,从而提高流程的生产率。

商业智能:机器学习特性与大数据分析结合使用时,可以帮助公司找到解决问题的方法,这些问题可以帮助企业发展并产生更多的利润。

从零售到金融服务再到医疗保健,等等,机器学习已经成为促进业务运营的最有效技术之一。

机器学习的最佳语言是什么?

尽管有许多可用于机器学习的语言,但据我称,Python是机器学习应用程序的最佳编程语言。这是由于以下部分提到的各种好处。可以用于机器学习应用程序的其他编程语言是R,C ++,JavaScript,Java,C#,Julia,Shell,TypeScript和Scala。R还是一种非常好的机器学习入门语言。

与其他编程语言相比,Python以其可读性和相对较低的复杂性而闻名。机器学习应用程序涉及复杂的概念,例如微积分和线性代数,这些实现需要花费很多精力和时间。Python通过快速实施来帮助机器学习工程师验证想法,从而减轻了负担。您可以查看《Python教程》以获得对该语言的基本了解。在机器学习中使用Python的另一个好处是预构建的库。如下所述,针对不同类型的应用程序有不同的软件包:

  •  在处理图像时使用Numpy,OpenCV和Scikit
  •  文本处理时,NLTK与Numpy和Scikit一起
  •  Librosa用于音频应用
  •  Matplotlib,Seaborn和Scikit用于数据表示
  •  用于深度学习应用程序的TensorFlow和Pytorch
  •  科学计算科学
  •  Django,用于集成Web应用程序
  •  熊猫用于高级数据结构和分析

Python提供了在面向对象的编程或脚本之间进行选择的灵活性。也不需要重新编译代码。开发人员可以实施任何更改并立即查看结果。您可以将Python和其他语言一起使用以实现所需的功能和结果。

Python是一种通用的编程语言,可以在任何平台上运行,包括Windows,MacOS,Linux,Unix等。从一个平台迁移到另一个平台时,代码需要进行一些小的改动和更改,并且可以在新平台上使用了。

以下是使用Python解决机器学习问题的好处的摘要:

机器学习的类型

机器学习大致分为三类

  •  监督学习
  •  无监督学习
  •  强化学习

什么是监督学习?

让我们从一个简单的例子开始,说您正在教一个孩子区分狗和猫。你会怎么做? 

您可以给他/她看狗,然后说“这是狗”,遇到猫时您会指出它是猫。当您向孩子展示足够多的猫狗时,他可能会学会区分它们。如果他训练有素,他也许就能认出他从未见过的不同品种的狗。 

同样,在监督学习中,我们有两组变量。一种称为目标变量,或称为标签(我们要预测的变量)和特征(可帮助我们预测目标变量的变量)。

我们向程序(模型)显示功能以及与这些功能关联的标签,然后程序便能够在数据中找到潜在的模式。以该数据集的示例为例,在该数据集中我们要根据房屋的大小来预测房屋的价格。作为目标变量的价格取决于作为特征的尺寸。

Number of rooms Price
1 $100
3 $300
5 $500

在真实的数据集中,我们将有更多的行和不止一个功能,例如大小,位置,楼层数等等。

因此,可以说监督学习模型具有一组输入变量(x)和一个输出变量(y)。一种算法识别输入和输出变量之间的映射函数。关系为y = f(x)。

在我们已经知道输出和算法每次都得到更正以优化其结果的意义上,对学习进行监视或监督。对数据集进行算法训练并对其进行修改,直到达到可接受的性能水平。

我们可以将有监督的学习问题归类为:

回归问题–用于预测未来价值,并使用历史数据对模型进行训练。例如,预测房屋的未来价格。

分类问题–各种标签训练算法以识别特定类别中的项目。例如,狗或猫(如上例中所述),苹果或橙子,啤酒或葡萄酒或水。

什么是无监督学习?

这种方法是没有目标变量,只有输入变量(特征)的方法。该算法可自行学习并在数据中发现令人印象深刻的结构。 

目的是破译数据中的基础分布,以获得有关数据的更多知识。 

我们可以将无监督学习问题分组为:

聚类:这意味着将具有相同特征的输入变量捆绑在一起。例如,根据搜索记录对用户进行分组

关联:在这里,我们发现控制数据集之间有意义关联的规则。例如,观看“ X”的人也会观看“ Y”。

什么是强化学习?

在这种方法中,机器学习模型经过训练,可以根据他们对自己的行为所获得的奖励和反馈做出一系列决策。机器学习如何在复杂和不确定的情况下实现目标,并且在学习期间每次达到目标都会获得奖励。 

强化学习与监督学习在没有可用答案的意义上有所不同,因此强化代理决定执行任务的步骤。当没有训练数据集时,机器会从自己的经验中学习。

机器学习算法

这可能是您机器学习过程中最耗时且最困难的过程。机器学习中有很多算法,您不需要完全了解它们就可以入门。但是我建议,一旦您开始练习机器学习,就应该开始学习其中最受欢迎的算法,例如:

  •  线性回归
  •  逻辑回归
  •  决策树
  •  支持向量机
  •  朴素贝叶斯
  •  K近邻
  •  K均值
  •  随机森林
  •  梯度提升算法
    •  GBM
    •  XGBoost
    •  LightGBM
    •   猫助推器

在这里,我将简要概述一下机器学习中最简单的算法之一,即K近邻算法(这是一种监督学习算法),并说明如何将其用于回归和分类。我强烈建议检查线性回归和逻辑回归,因为我们将要实现它们,并在实现部分将结果与KNN(K最近邻)算法进行比较。

您可能需要注意,对于回归问题和分类问题,通常有单独的算法。但是通过修改算法,我们可以将其用于分类和回归,如下所示

K最近邻居算法

KNN属于一组懒惰的学习者。与急切的学习者(例如逻辑回归,SVM,神经网络)相反,懒惰的学习者只是将训练数据存储在内存中。在训练阶段,KNN整理数据(建立索引的过程),以便在推理阶段有效地找到最接近的邻居。否则,它将不得不将推理期间的每个新个案与整个数据集进行比较,从而使其效率很低。

因此,如果您想知道什么是训练阶段,急切的学习者和懒惰的学习者,现在请记住,训练阶段是算法从提供给它的数据中学习的时间。例如,如果您经历了上面链接的线性回归算法,则在训练阶段,该算法将尝试找到最佳拟合线,该过程包括大量计算,因此需要大量时间,并且这种类型的算法被称为渴望的学习者。另一方面,懒惰的学习者就像KNN一样,不涉及很多计算,因此训练速度更快。

分类问题的K-NN

现在让我们看看如何使用K-NN进行分类。这里是一个假设的数据集,它试图根据身高和体重(特征)来预测一个人是男性还是女性(标签)。

高度(厘米)-特征 重量(kg)-特点。 性别(标签)
187 80
165 50
199 99
145 70
180 87
178 65
187 60

现在让我们绘制这些点:

现在,我们要分类一个新点,因为它的高度为190 cm,重量为100 Kg。这是K-NN对这一点进行分类的方式:

  1.  选择K的值,用户在分析数据后选择他认为最好的K值。
  2.  测量新点与其最接近的K个点的距离。有多种计算此距离的方法,其中最常用的方法是-Euclidian,Manhattan(用于连续数据点,即回归问题)和Hamming距离(用于分类,即用于分类问题)。
  3.  确定更接近新点的点的类别,并相应地标记新点。因此,如果更接近我们的新点的大多数点属于某个“ a”类,则我们的新点预计将来自“ a”类。

现在让我们将此算法应用于我们自己的数据集。让我们首先绘制新数据点。

现在让我们取k = 3,即,我们将看到与新点最接近的三个点:

因此,它被分类为男性:

现在让我们取k = 5的值,看看会发生什么:

正如我们所看到的,最接近新数据点的四个点是男性,只有一个点是女性,因此我们以多数为准,再次将其分类为“男性”。分类时,必须始终选择K的值作为奇数。

回归问题的K-NN

我们已经看到了如何使用K-NN进行分类。现在,让我们看看进行了哪些更改以将其用于回归。该算法几乎相同,只有一个区别。在分类中,我们检查了所有最近点的大部分。在这里,我们将取所有最近点的平均值,并将其作为预测值。让我们再次以相同的示例为例,但是在这里我们必须根据一个人的身高(特征)来预测他的体重(标签)。

高度(厘米)-特征 重量(kg)-标签
187 80
165 50
199 99
145 70
180 87
178 65
187 60

现在我们有了一个高度为160cm的新数据点,我们将K值分别设为1,2和4来预测其权重。

当K = 1时:我们数据中最接近160cm的点是165cm,其权重为50,因此我们得出的结论是预测的权重本身就是50。

当K = 2时:两个最接近的点分别是165和145,权重分别等于50和70。取平均值,我们说预测重量为(50 + 70)/ 2 = 60。

当K = 4时:重复相同的过程,现在我们取4个最接近的点,因此我们得到70.6作为预测的权重。

您可能会认为这真的很简单,并且机器学习没有什么特别的,它只是基础数学。但是请记住,这是最简单的算法,一旦前进,您将看到更加复杂的算法。

机器学习步骤

我希望机器学习只是在数据上应用算法并获得预测值,但这不是那么简单。机器学习中有几个步骤对于每个项目都是必须的。

      1.  收集数据:这可能是最重要和最耗时的过程。在这一步中,我们需要收集可以帮助我们解决问题的数据。例如,如果您要预测房屋的价格,我们需要一个适当的数据集,其中包含有关过去房屋销售的所有信息,然后形成表格结构。我们将在实现部分中解决类似的问题。

      2.  准备数据:有了数据后,我们需要将其以正确的格式进行处理。预处理涉及各种步骤,例如数据清理,例如,如果您的数据集包含一些空值或异常值(例如,字符串而不是数字),您将如何处理它?我们可以采用多种方法,但一种简单的方法是只删除具有空值的行。

    同样有时候在数据集中,我们可能会有对结果没有影响的列,例如id,我们也将这些列也删除了。我们通常使用数据可视化通过图形和图表对数据进行可视化,然后在分析图形之后确定特点是important.Data预处理是一个巨大的话题。

      3.  选择模型:现在我们的数据已经准备就绪,可以输入到机器学习算法中了。如果您想知道什么是模型?通常,“机器学习算法”与“机器学习模型”可以互换使用。模型是对数据运行的机器学习算法的输出。

    简单来说,当我们对所有数据实施算法时,我们得到的输出包含所有规则,数字以及进行预测所需的任何其他特定于算法的数据结构。例如,在对数据执行线性回归后,我们得到了最佳拟合线的方程式,该方程式称为模型。下一步通常是训练模型,以防万一我们不想调整超参数并选择默认参数。

      4.  超参数调整:超参数 至关重要,因为它们控制着机器学习模型的整体行为。最终目标是找到能够为我们带来最佳结果的超参数的最佳组合。但是这些超参数是什么?记住我们的K-NN算法中的变量K。

    当我们设置不同的K值时,我们会得到不同的结果.K的最佳值不是预先定义的,并且对于不同的数据集是不同的。没有方法可以知道K的最佳值,但是您可以尝试不同的值并检查哪个值可获得最佳结果。这里的K是一个超参数,每个算法都有自己的超参数,我们需要调整它们的值以获得最佳结果。

      5.  评估:您可能想知道,如何知道模型的性能好坏,还有什么比在某些数据上测试模型更好的方法呢?该数据被称为测试数据,并且不能是我们在其上训练算法的数据(训练数据)的子集。

    训练模型的目的不是让它学习训练数据集中的所有值,而是识别数据中的基础模式,并基于此模式对从未见过的数据进行预测。有多种评估方法,例如K折交叉验证等。我们将在下一节中详细讨论此步骤。

      6.  预测:现在我们的模型在测试集上也表现良好,我们可以在现实世界中使用它,并希望它在现实世界的数据上能够表现良好。

机器学习的优势

1. 轻松识别趋势和模式

机器学习可以查看大量数据,并发现人类看不到的特定趋势和模式。例如,对于像Amazon和Flipkart这样的电子商务网站,它可以了解其用户的浏览行为和购买历史,以帮助他们选择合适的产品,交易和提醒。它使用结果向他们显示相关广告。

2. 持续改进

我们将不断生成新数据,并在将数据提供给机器学习模型时帮助其随时间升级并提高其性能和准确性。我们可以说,这就像获得经验一样,因为他们不断提高准确性和效率。这使他们可以做出更好的决策。

3. 处理多维和多元数据

机器学习算法擅长处理多维和多类型的数据,并且它们可以在动态或不确定的环境中做到这一点。

4. 广泛的应用

您可以是电子零售商或医疗保健提供者,并可以使用机器学习。在适用的情况下,它具有帮助向客户提供更多个人体验的能力,同时还可以针对合适的客户。

机器学习的未来

机器学习可以成为任何一家公司的竞争优势,无论是顶级跨国公司还是初创公司。由于目前手动完成的工作将在明天由机器完成。随着无人驾驶汽车Sophia(由香港公司Hanson Robotics开发的类人机器人)等项目的推出,我们已经开始了解未来。机器学习革命将在我们身边长期存在,因此机器学习的未来也将如此。 

 

责任编辑:庞桂玉 来源: 马哥Linux运维
相关推荐

2020-12-16 15:56:26

机器学习人工智能Python

2023-11-02 14:30:25

机器学习

2023-11-02 14:26:30

PyTorch机器学习

2018-09-25 06:33:21

机器学习NLPPython

2021-07-29 13:06:29

Python机器学习编程语言

2022-06-05 21:16:08

机器学习Python

2018-09-17 14:50:41

机器学习教程汇总人工智能

2016-11-03 09:19:04

Python机器学习库

2014-03-17 10:28:52

PythonJulia

2022-06-09 09:14:31

机器学习PythonJava

2017-06-27 09:43:43

Python机器学习

2012-12-20 11:13:58

IBMdW

2021-01-22 11:18:58

Python机器学习超参数

2022-06-02 15:42:05

Python机器学习

2023-05-16 08:31:04

2020-08-19 09:20:00

机器学习人工智能Python

2017-04-11 12:05:07

机器学习python矩阵运算

2021-01-26 09:46:59

PythonStacking机器学习

2022-04-19 08:29:12

Python机器学习

2021-04-12 10:46:15

人工智能机器学习
点赞
收藏

51CTO技术栈公众号