Python机器学习新手指南

机器学习作为人工智能领域的一个重要主题,已经被大家关注相当一段时间了。 机器学习提供了有吸引力的机会,进入这一领域工作并不像想像中那么困难。 即使你在数学或编程方面没有任何基础,这也不是什么问题。取得成功的最重要 的因素是由足够的兴趣和动力去学习。

如果你是一个新手,可能不知道从哪开始学起,也不了解为什么需要机器学习, 以及为什么机器学习越来越流行,这正是本文的目的!我手机了所有必须的信息 和有用的资源来帮助你获取新的知识并完成第一个项目。

为什么从Python入手?

学编程,上汇智网,在线编程环境,一对一助教指导。

如果你的目标是成为一个成功的开发者,那你需要掌握很多技能。但是对于 机器学习和数据科学,只要掌握一门编程语言然后自信地使用它就够了。因此, 你不需要是一个编程天才。

对于成功的机器学习历程,有必要从一开始就选择合适的编程语言,因为你的 选择将决定你的未来。在这一步,你一定要战略性思考并且正确安排学习的优先级, 以避免将时间花在不必要的事情上。

我的观点是,Python是初学者的完美选择,它可以让你聚焦于机器学习和数据 科学本身。Python是一个最小化的直观的开发语言,有各种功能完善的开发库/框架, 可以显著地缩短你完成一个任务所需要的时间。

顺便说一下,你也可以考虑R语言,但是个人更倾向于Python。

STEP 0:机器学习流程概述

机器学习是基于经验的学习。这就像一个人是通过观察其他人下棋来学习 如何下象棋一样。通过给计算机提供训练信息,就可以让计算机获得识别 模式的能力。

首先,你需要了解机器学习流程中包含不同的节点:

  • 数据采集
  • 数据排序
  • 数据分析
  • 算法开发
  • 算法校验
  • 算法利用

为了搜索模式会使用各种算法,这些算法可以分为两组:

  • 无监督学习
  • 有监督学习

使用无监督学习算法时,你的机器只需要接收输入数据集。因此机器 来决定数据间的关系,这和有监督学习同时接收输入数据集和验证数据 来进行学习有所不同,无监督学习意味着计算机自己将找出不同数据 之间的关系和模式。无监督学习可以进一步分为聚类分析和关联分析。

有监督学习表示计算机可以基于提供的样本数据进行识别。例如,你 可以训练你的计算机基于之前收到的信息来过滤垃圾消息。

一些常见的有监督学习算法包括:

  • 决策树
  • 支持向量机
  • 朴素贝叶斯分类器
  • K近邻
  • 线性回归

STEP 1:重温使用Python数学库需要的数学技能

在人工智能和机器学习领域工作的人不懂数学,就像一个政客不懂如何 说服别人。

是的,不掌握基础的数学知识,你无法应对机器学习和数据科学项目。 但是,这并不是说你一定要有数学专业学位才可以成功。从我个人经历 而言,每天至少化30~45分钟时间就可以很有帮助,你可以更快地理解 并掌握Python中关于数学和统计的高级主题。

你需要阅读或复习底层原理。不需要阅读完整的教程,只要关注核心 概念即可。

有3个步骤来学习数据分析和机器学习所需要的数学知识:

1 - 线性代数:标量、矢量、矩阵和张量

例如,对于主成分方法,你需要了解特征向量,而使用回归算法则要求 你掌握矩阵乘法。另外,机器学习通常使用高维数据,这种数据最适合 使用矩阵表示。

2 - 数学分析:微分和梯度

数学分析是许多机器学习算法的基础。优化问题需要使用微分和梯度 方面的知识。例如,最常用的优化算法之一就是梯度下降。

要快速学习线性代数和数学分析,我推荐这些教程:

  • 可汗学院:提供线性代数和数学分 析的简短的实用课程,涵盖大多数重要的主题。
  • MIT开放课件提供机器学习相关数学的课程, 包含所有的视频课件和学习资料。

3 - 梯度下降:从零创建一个简单的神经网络

在数据分析和机器学习灵越学习数学的最好的颁发就是从零创建一个 简单的神经网络。你将使用线性代数来表示网络,使用数学分析来优化网络。 尤其是你可以从零创建一个梯度下降的实现。不用太担心神经网络的差异, 你只需要跟着教程编写实现代码即可。

下面是一些很好的串讲教程:

用Python实现神经网络 - 这是一个出色的教程,你可以从零创建一个简单的神经网络,其中包含了有用的图示以及梯度下降工作原理的说明、。

下面是稍短一些的教程,也可以帮助你逐步掌握神经网络:

STEP 2:学习Python语法基础

好消息是,你不需要一整套Python教程,因为Python和数据分析并不是同义词。

在开始学习语法之前,我希望分享一个有见地的建议,有助于你尽量避免失败:

只是阅读游泳技巧的书籍是不可能学会游泳的,但是在泳池中训练的同时阅读这些 书籍可以更高效地掌握有用技能。

在学习编程时也有类似的情况。不需要专注于语法,因为那样你可能很快就丧失 兴趣了。

你也不需要记住所有的东西。每次进步一点点,别担心在实践中综合运用理论只是。 专注于直觉地理解。例如,在某个用例中哪个函数是合适的,以及条件操作符的工作 原理。你将通过阅读文档以及编写代码来逐渐地记住语法。很快你就不再需要利用 搜索引擎来查找这些东西了。

如果你之前没有任何的编程经验,我推荐你阅读用Python自动化乏味的任务。 这本书为小白新手提供了实用的编程知识,而且从零教起。可以阅读第6章,字符串操作, 完成课后的实践练习,这就够了。

还有一些其他的有用资源:

记住,你越早开始真正的项目,你就可以越快地学会。无论怎样,你总是 可以在需要的时候温习语法。

STEP 3:探索主流数据分析库

接下来的阶段就是学习Python中与数据科学相关的那部分开发库或框架。正如之前 指出的,Python有大量的开发库。所谓库就是一组预先开发好的函数和对象,你可以 直接引入你的脚本来使用,这样就节约了不少时间。

如何使用库?下面是一些建议:

  • 打开Jupyter Notebook
  • 用大约半个小时过一遍库的文档
  • 在你的Jupyter Notebook中导入库
  • 按照库文档中的指南逐步操作
  • 检查结果和文档是否一致

我并不推荐立刻深入学习库的使用,因为当你开始在项目中使用时,有可能已经忘掉了 学习的大部分内容。相反,先试着了解每个库的功能就够了。

需要学习的Python库:

Numpy

Numpy是Numerical Python的缩写,无论初学者还是专业人士,这个库都是应用最广泛 的。使用Numpy你可以轻松操作多维数组和矩阵,Numpy同时也提供了像线性代数操作和 数值转换之类的函数。

文档 | 快速上手教程

Pandas

Pandas是一个著名的高性能工具,它将数据表示为帧。使用Pandas你几乎可以从 任何来源载入数据,提供各种计算函数,也可以像SQL那样使用聚合函数进行查询, 而且pandas提供各种矩阵变换函数。总而言之,Pandas是一个数据专业人士的 弹药库中不可缺少的武器。

文档 | 快速上手教程

Matplotlib

Matplotlib是一个灵活的用于创建图表和可视化的Python库。它很强大但是有时 有点太重量级了。这种情况下你可以跳过Matplotlib而使用Seaborn来切入。

文档 | 快速上手教程

Scikit-Learn

我敢说这是迄今为止我看到的设计最棒的机器学习开发包。它实现了大量的 机器学习算法,而且很容易应用到实际的项目里。你可以使用像回归、聚类、 模型选择、预处理、分类等各种预置函数。因此,这个库非常值得学习和使用, 一些领先的平台例如Spotify、Booking.com等等都在使用scikit-learn。

STEP 4:开发结构化项目

一旦你掌握了基本的语法,也了解了一些库的基本情况,就可以开始自己的项目了。 有了项目实践,你就可以学习新东西,同时也为今后的工作提供了基础。

有很多资源提供结构化的项目主题:

Dataquest - 互动学习Python和数据科学。你需要 分析一些列有趣的数据集,从CIA的文档开始,到统计NBA的比赛数据。你将开发一个 使用神经网络和决策树的策略算法。

Python数据分析 - 书的作者在Python数据分析方面发表了大量论文

Scikit文档- 官方文档

CS109 - 哈佛大学的数据科学课程

STEP 5:做你自己的项目

你能够找到很多新东西,但是重要的是找到那些可以激发你灵感的项目。但是 在找到你梦想工作之前,应当学会如何处理你应用中的错误。这方面的资源包括:

StackOverflow - 问答网站

Python文档 - 可以搜索参考资料

你也不应该忽略任何合作的机会。参加所有可能的与Python相关的活动以及一些 有趣的项目。


原文链接: Beginner’s Guide to Machine Learning with Python

汇智网翻译整理,转载请标明出处