前两天我们为大家总结了一下 AI 在 2018 年的发展以及对 2019 年 AI 应用的展望, 今天我们便将回归到技术博客的本质, 为大家讲讲为什么我对 Jupyter Notebook 如此推崇, 以及为什么 Jupyter Notebook 与机器学习 / 数据分析是完美的搭配组合.
在讲为什么之前, 先来介绍一下什么是 Jupyter Notebook(以下简称 Jupyter). 简单来说, 它是一种模块化的 Python 编辑器(现在也支持 R 等多种语言), 即在 Jupyter 中, 你可以把大段的 Python 代码碎片化处理, 分开每一段来运行. 在软件开发中, Jupyter 可能显得并没有那么好用, 这个模块化的功能反而会破坏掉程序的整体性; 但是当你在做数据处理, 分析, 建模, 观察结果等的时候, Jupyter 模块化的功能不仅会为你提供更好地视觉体验, 更能大大缩小运行代码及调试代码的时间, 同时还会让你整个处理和建模的过程变得异常清晰, 接下来我将为大家一一详细讲述 Jupyter 的这些优点.
Jupyter Notebook 将 Python 的交互式特点发挥到了极致
熟悉 Python 的同学一定对 Python 的交互式功能感触颇深. 当工作后有一次和一个做嵌入式好友聊起 Python 时, 同学表示他被 Python 的易读性和交互性所震惊了. 做嵌入式用的 C 和 C++ 每次都要经过编译, 而且每一行的代码没有办法单独运行. 与之不同的是, Python 的每一行都像是人类交流所用的文字一样, 简单易懂且有交互性, 所谓交互性, 就是有问有答, 你输入一句, 它便返回一句的结果. 但在一般的 IDE 中(如 PyCharm),Python 的这一交互功能被极大地限制, 通常我们会将程序整段编写之后一起运行. 而在 Jupyter 当中, 我们可以每写几行或者每完成一个小的模块便运行一次. 也许对于软件工程师们来说, 这个功能并没有多大的吸引力; 但是对身为机器学习工程师的我们来说, 这个功能可以说是我们的大救星.
熟悉机器学习和数据分析的朋友一定知道, 分析和建模是非常碎片化的工作, 而每一块的碎片又有着非常强的独立性, 甚至可以说除了数据本身之外, 每一块的代码之间并没有很强的关联性. 数据分析和处理的过程往往是一个不断试验的过程, 我们需要一次又一次的改变预处理的方式, 尝试不同的特征工程处理, 一遍又一遍的调整着模型参数等等等等. 每一部分的工作都需要反复试验反复修改, 而下一模块需要用到的只不过是上一模块输出的数据. 通过 Jupyter, 我们可以最快的得知自己做出的调整是好还是坏, 并尽快进入到下一次的试验当中.
以下是 Jupyter Notebook 与其他 IDE 输出结果的对比:
PyCharm
Jupyter Notebook
说到 Jupyter Notebook, 就不得不提到 Anaconda.Anaconda 是一款便捷的环境管理工具, 利用 Anaconda 可以轻松创建虚拟环境, 快速下载安装 Python 中的各种函数库. Anaconda 中集成了 1400 数据科学 / 机器学习的函数库, 目前这些库适配于 Python 3.6,Python 3.7, 以及 Python 2.7 三个版本. Anaconda 让机器学习在 Jupyter 中更容易实现, 也更容易去观测.
以下是部分 Anaconda 中的函数库:
Jupyter Notebook 更利于汇报和教学
Jupyter 在工作汇报和教学方面也是非常的优秀. 由于 Jupyter 本身的模块化和内容的清晰化, 使得其天生具有如 PPT 一般的展示工作成果的功能.
如上图所示, 由于 Jupyter 中可以将输出结果嵌套在 Notebook 中, 并且支持 Markdown 语句的操作, 这样使得你可以在 Jupyter 中输入任何你需要展示的内容, 并且这些内容都会以一种有组织有层次的样子排列出来.
而当 Jupyter 被应用于教学时, 老师可以利用这个特点设置相应的题目以及部分的讲解内容, 而学生则负责填满老师所留的空白, 以达到老师作业的要求. 目前 Jupyter 已经被各大慕课 (MOOC) 平台广泛应用.
来源: http://www.jianshu.com/p/4c3d98b3d556