《Python大规模机器学习》—1.2.7 Jupyter/IPython介绍
1.2.7 Jupyter/IPython介绍
IPython是由Fernando Perez开发的一个免费项目,于2001年开始启动,它使用一个能在软件开发过程中结合科学方法(主要是实验和交互式发现)的用户编程接口,解决了Python堆栈用于科学研究的缺陷。
科学方法意味着能够以可复制的方式对不同假设进行快速实验(就像数据科学中的数据探索和分析任务一样),还意味着在使用IPython时,能够在编写代码时更自然地实现探索性的迭代和试错研究。
最近,IPython项目的大部分已转移到一个名为Jupyter的新项目。这个新项目将原来的IPython接口的潜在可用性扩展到各种编程语言。(要查看完整列表,请访问https://github.com/ipython/ipython/wiki/IPythonkernelsforotherlanguages。)
由于强大的内核思想,运行用户代码的程序都通过前端接口进行通信,并将代码运行的结果反馈给接口本身;无论使用哪种语言,都能使用相同接口和交互式编程风格。
可以将Jupyter(IPython是零内核、原始的启动端)简单描述为交互任务的工具,它由控制台或基于Web的笔记本操作,可以提供特殊命令帮助开发人员更好理解和构建当前正在编写的代码。
IDE的构建思想是编写脚本,运行脚本,最后评估其结果,与IDE不同,Jupyter允许你以名为“单元格”的块编写代码,依次运行每个单元格,并分别评估每个单元格的结果,可以检查文本和图形输出。除图形集成外,它还提供更多帮助,这得益于可定制的命令、丰富的历史记录(以JSON格式表示)和计算并行性,能够增强处理大量数值计算时的性能。
这种方法对于涉及开发基于数据的代码任务也特别有效,因为它能自动完成诸如记录和说明数据分析方式、其前提和假设以及中间结果和初始结果等这些常被忽视的任务。如果你的部分工作职责是展示工作成果并说服内部或外部的利益相关者参与该项目,那么Jupyter 具有真正的讲述故事的魅力。在https://github.com/ipython/ipython/wiki/AgalleryofinterestingIPythonNotebooks上有很多示例,其中一些可能会为你的工作带来灵感。
事实上,我们必须承认,保持一个干净、最新的Jupyter Notebook能为我们节省大量时间,当与管理者/利益相关者突然会面时,就要求必须匆忙展示我们的工作状态。
总之,Jupyter能为你提供以下功能:
查看(调试)每个分析步骤的中间结果
仅运行代码的某些部分(即单元格)
以JSON格式存储中间结果并对其进行版本控制
通过Jupyter Notebook Viewer服务(http://nbviewer.jupyter.org/)分享你的作品(文本、代码和图像的组合),并很容易将其导出为HTML、PDF甚至幻灯片。
本书中首选Jupyter,以便清晰有效地说明脚本和数据操作及其结果。
虽然强烈建议使用Jupyter,但如果你使用的是REPL或IDE,那么使用相同指令也能获得相同结果(返回结果的打印格式和扩展除外)。
如果你的系统上没有安装Jupyter,可以使用以下命令快速安装它:
可以在http://jupyter.readthedocs.io/en/latest/install.html找到Jupyter安装的完整说明(针对不同操作系统)。
如果已安装了Jupyter,请至少升级到4.1版本。安装完成后,可以立即从命令行调用并开始使用Jupyter:
一旦Jupyter实例在浏览器中打开(如图11所示),请点击“New”按钮,在Notebooks部分选择“Python 2”(此处可能出现其他内核,具体取决于所安装内容):
图1-1Jupyter界面
此时,你的电脑屏幕如图1-2所示,可以开始在单元格中输入命令:
图1-2在Jupyter中执行命令
例如,在单元格中输入以下内容:
写入单元格后,只需点击“Play”按钮(单元格选项卡下方)即可运行它并获得输出。然后,将出现另一个单元格供你输入。在单元格中写入时,如果单击上面菜单栏上的加号按钮,会得到一个新单元格,同时菜单上的箭头从一个单元格移动到另一个单元格。
其他大部分功能都非常直观,我们鼓励你尝试并使用它们。
为更好了解Jupyter的工作方式,你可以使用http://jupyternotebookbeginnerguide.readthedocs.io/en/latest/这样的快速入门指南,或者翻阅专门研究Jupyter功能的书。
关于运行IPython内核时所有Jupyter功能的完整说明,请参阅以下两本书:
为便于说明,可以认为每个Jupyter指令块都有带编号的输入语句和一条输出语句,所以你会发现本书中的代码结构分为两块。若有必要则显示输出,否则只会有输入部分:
通常,需要你在单元格中键入“In:”之后的代码并运行。然后,将你的输出与我们实际测试所获得的输出进行比较,我们的输出放在“Out:”的后面。
- 点赞
- 收藏
- 关注作者
评论(0)