为什么Jupyter Notebook会比其他工具更受欢迎?

论智 发表于 2018-05-31 09:27:54 收藏 已收藏
赞(1) •  评论(0

为什么Jupyter Notebook会比其他工具更受欢迎?

论智 发表于 2018-05-31 09:27:54

对于机器学习和数据科学的入门者来说,“有什么好用的IDE/环境/工具?”是他们提出的最常见的问题之一。这确实也是个不怎么好回答的问题,因为它没有具体选项——从面向特定语言的IDE(如R Studio、PyCharm)到Sublime Text、Atom等编辑器——它们都很优秀,所以如果你有选择恐惧症,你最好读读论智的这篇文章,从Jupyter Notebook开始学起。

如果每个数据科学家都应该使用或必须使用一种工具,毫无疑问,它就是Jupyter Notebook(曾用名iPython Notebook)。Jupyter Notebook是一个交互式笔记本,它功能强大,支持40多种编程语言,可共享,并提供在同一环境中构建可视化应用的服务。

数据科学家可以在上面创建和共享自己的文档,从实现代码到全面报告,Jupyter Notebook大大简化了开发者的工作流程,帮助他们实现更高的生产力和更简单的多人协作。也正是因为如此,它一直以来都是数据科学家们最喜欢的工具之一。

本文将全面介绍笔记本的安装、操作方法,并深入探讨它的特性和优势。当你读完全文后,我们希望你能找到用Jupyter Notebook帮助自己实现机器学习项目的灵感。

1. 什么是Jupyter Notebook?

Jupyter Notebook是一个开源的Web应用程序,旨在方便开发者创建和共享代码文档。

它提供了一个环境,用户可以在里面写代码、运行代码、查看结果,并在其中可视化数据。鉴于这些优点,Jupyter Notebook成了数据科学家眼里的一款人见人爱的工具,它能帮助他们便捷地执行各种端到端任务,如数据清洗、统计建模、构建/训练机器学习模型等。

而对于初学者,Jupyter Notebook也独具魅力。它的一个特色是允许把代码写入独立的cell中,然后单独执行。这样做意味着用户可以在测试项目时单独测试特定代码块,无需从头开始执行代码。虽然其他的IDE环境(如RStudio)也提供了这种功能,但就个人使用情况来看,Jupyter Notebook的单元结构是设计的最好的。

这个笔记本的优势还体现在灵活性和交互性上。Jupyter Notebook支持的编程语言数量高达40余种,除了最基础的Python,它还允许用户在上面运行R语言和SQL等语言。由于它比IDE平台更具交互性,用户也更乐于在各种教程中用它展示代码。

2. 如何安装Jupyter Notebook?

Jupyter Notebook原来也叫iPython Notebook,顾名思义,它和Python关系紧密。如果要在PC上安装笔记本,首先你要确保自己已经安装了Python(2.7/3.3或更高),这是必备条件。

Anaconda

官方在文档中强烈建议新用户用Anaconda打包安装Python和Anaconda——所谓懒人方法,小白必备。其实除了提到的两个工具,Anaconda还包含数据科学和机器学习中经常需要用到的各种软件包,只需下载、解压、安装,所有工具就都一步到位了。

下载地址:https://jupyter.readthedocs.io/en/latest/install.html

pip

如果你很欣赏自己,或者因为某些因素就是不想用Anaconda,你也可以用pip。当然首先,你得确保自己的机器上有pip的最新版本。

#Linux和OSX

pip install -U pip setuptools

#Windows

python -m pip install -U pip setuptools

然后,安装Jupyter Notebook:

#Python2用户看这里

pip install jupyter

#Python3用户不要跑

pip3 install jupyter

如果还是有疑问,请看官方文档(英)、官方文档翻译(中)。

3. 入门

安装完成后,如果要运行Jupyter Notebook,你只需在控制台输入以下命令:

jupyter notebook

你会看到笔记本打开了你的默认浏览器,网址为http:// localhost:8888/tree。

一般情况下,当你输入命令行后,控制台会出现一行“The Jupyter Notebook is running at……”,如果浏览器因为某些原因无法打开,你就需要复制这个URL,手动打开相应网址。

当笔记本打开后,它的顶部有Files、Running和Clusters三个选项。其中Files中列出了所有文件,Running显示了你已经打开的终端和笔记本,Clusters则是IPython parallel提供的。

如果你想新建一个笔记本,单击面板右侧的“New”,它会跳出4个选项:

Python 3

Text File

Folder

Terminal

选择Text File后,你会得到一个空白的页面。它相当于一个文本编辑器(类似于Ubuntu上的应用程序),你可以在上面输入任何字母、单词和数字,所以选择好编程语言后,你是可以在上面写脚本的。此外,它还提供查找和替换文件中的单词的功能。

选择Folder后,你其实是在编辑文件夹列表。你可以创建一个新文件夹,把所需文档放进里面,或者修改它的名称、直接把它删除。

而Terminal的工作方式和Mac、Linux计算机上的Terminal一样,都是在Web浏览器中创建终端支持。只需在终端输入Python,一个Python脚本就写好了。

由于本文重点介绍的是笔记本,下面我们会重点展示新建“Python 3”后的结果:

导入最常见的Python库来启动笔记本,如pandas和numpy。在代码上方的菜单中,那些图标依次表示添加、编辑、剪切、向上移动cell、向下移动cell、运行代码、停止运行和撤销。

这个下拉的列表提供了四个选项:

Code:这个不言自明,就是你写代码的地方;

Markdown:非常常见的轻量级标记语言,用来为代码添加注释和结论;

Raw NBConvert:一个命令行工具,可以把你的笔记本转换成另一种格式,如HTML;

Heading:添加标题,使你的文档看起来更干净整洁,它现在已经变成Markdown里的一个语法,用两个#表示。

4. Jupyter Notebook的魔术命令

作为iPython的继承者,开发人员已经在Jupyter Notebook中加入预定义的魔术命令(magic function)。这是一种增加便捷性和互动性的工具,如果要查看命令列表,你可以输入(注:通常不需要“%”):

%lsmagic

当看到那一串函数列表时,也许你能从中认出几张老面孔,如%clear、%autosave、%debug和%mkdir。只要你以前写过代码,这些函数就几乎是不可避免的。

在Jupyter Notebook中,魔术命令有两种运行方式,一是Line-wise,而是Cell-wise。顾名思义,Line-wise就是当你想执行一个命令行的时候需要用到的,而Cell-wise面向的就不单单是一行了,它作用的是整个cell的代码块。

为了区分两种运行方式,如果是Line-wise,所有命令必须以%字符打头;如果是Cell-wise,则用%%。

Line-wise:

%time a = range(10)

Cell-wise:

%%timeit a = range (10)

min(a)

以上只是两个最简单的示例,你可以试着自己运行这些命令,看看其中有什么区别。

5. 不仅限于Python

之前也提到了,Jupyter Notebook的成功离不开它的灵活性,虽然Python在数据科学和机器学习中都占局主导地位,但对于数据分析任务,其他语言也有各种各样的特色和优势,比如R语言的'ggplot2'软件包就非常好用。在这一点上,Jupyter Notebook的态度是开放的。

如果想在Jupyter Notebook中启用R,你需要先去GitHub上下载'IRKernel'(R的专用kernel),然后按以下8个步骤依次执行(附图解地址):

步骤一:用Anaconda安装Jupyter Notebook;

步骤二:完成下载后,打开Anaconda命令提示符;

步骤三:输入ipython notebook新建ipython笔记本

步骤四:用conda update ipython-notebook这个命令行更新笔记本;

步骤五:输入conda install -c r ipython-notebook r-irkernel安装IRkernel;

步骤六:用R.exe打开R;

步骤七:输入install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = 'http://irkernel.github.io/', type = 'source')安装必要软件包;

步骤八:输入IRkernel::installspec()后再输入quit(),完成操作。

如果是Julia用户,你也可以在Jupyter Notebook中“畅所欲言”。考虑到篇幅因素,有需要的读者请前往www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/查看图文攻略。

和R语言一样,JavaScript用户也需要去Github先下载‘IJavascript’ kernel:github.com/n-riesco/ijavascript。文档里已经明确写出了安装kernel所需的步骤,但要注意的是,记得先装Node.js和npm,这是大前提!

6. Jupyter Notebook的交互式控制面板

在添加小部件前,你需要先导入小部件包:

from ipywidgets import widgets

小部件的基本类型是典型的基于输入和按钮的文本输入。你可以参考下面这幅动图,了解交互式小部件的外观:

来源:Dominodatalab

7. 快捷键

既然Jupyter Notebook的主打优势是便捷,那它自然少不了方便操作的快捷键。事实上,当你想运行任意代码块时,只需按下Ctrl + Enter就可以了。

下面是本文挑选的一些实用快捷键,有需要的读者可以视情况逐个阅读+尝试,如果今后你会经常用到Jupyter Notebook,那不会这些组合键的你就几乎已经是条咸鱼了。

Jupyter Notebook提供了两种不同的键盘输入模式——Command和Edit。其中Command模式是将键盘和计算机命令绑定在一起,这时单元框线是灰色的(左侧蓝色粗线)。Edit模式允许你将文本(或代码)键入活动单元,这时单元框线是绿色的。

用Esc和Enter分别在Command和Edit模式之间跳转。

更多快捷键介绍(中文):blog.csdn.net/lawme/article/details/51034543

8. 有用的扩展

添加扩展是提高Jupyter Notebook效率的一种非常有效的方式,那么安装和使用扩展哪家强?这里我们推荐Nbextensions。

先是安装(pip):

pip install jupyter_contrib_nbextensions

安装关联的JavaScript和CSS文件:

jupyter contrib nbextension install --user

完成此操作后,你会在Jupyter Notebook主页顶部看到一个'Nbextensions'选项卡。

如果要启用一个扩展,只需点击来激活。下面是4个比较有用的扩展。

Code prettify:它可以让你的代码更美观。

Printview:生成预览,新增的按钮叫jupyter nbconvert。

Scratchpad:生成一个实验环境(副本)跑代码,不会对笔记本代码造成影响。

Table of Contents (2):抓取所有标题,并显示在浮动窗口中。

此外,小编也曾经写过一篇《Top 5:五大最实用的Jupyter Notebook扩展插件》,介绍了另外5种好用的扩展,有兴趣的读者可以一起看一看。

9. 保存和共享你的笔记本

这是Jupyter Notebook中最重要和最棒的功能之一。有过写博客经历的读者也许知道这种痛,当你一腔热血想把自己的成果分享给别人时,可能代码格式还没转完你就放弃了。大多数笔记本都采用json格式,它不是很适合共享,也不利于在博客中发布不同的单元块。

但Jupyter Notebook不一样,点击进入“file”后,你会看到一个“Download as”:

看到这7个选项后你就很开心了,其中最常用的是.ipynb文件。你也可以用nbconvert选项手动将笔记本转换为不同的格式,如HTML和PDF。

此外,你还可以使用jupyterhub,它允许你在其服务器上托管笔记本并与多个用户共享。许多顶尖的研究项目都把这作为协作方式。

10. JupyterLab

JupyterLab是今年2月推出的一个工具,从某种程度上来说,它是Jupyter Notebook的一个发展——拥有同样的组件,但允许更灵活和更强大的项目工作方式。换句话说,它的用户体验更好。

JupyterLab的特色是允许用户在一个窗口内安排笔记本、终端、文本文件和输出的工作区。你可以把窗口拖到你想要的位置,也可以通过实时预览编辑常用文件格式,如Markdown、CSV和JSON,实时查看项目进展。

11. 实践和技巧

虽然自己钻研很有趣,但无论是学习还是工作,大部分时候你是在一个团队中工作的。在这种情况下,你要规范自己的操作和实践,确保笔记本中的代码和注释都是正确的,方便其他人阅读、理解。以下是一些实践指标,仅供参考:

对每个程序员来说最重要的事:要好好注释!

确保你保存了代码文档。

形成一套命名体系,并在实践中落到实处,方便自己和他人理解。

在刚开始的时候导入所需的库,并在旁边注释导入目的。

确保代码行距合适,你也不想别人因为看不懂你的循环和函数疯掉,对吧?

当代码越来越多时,隐藏不重要代码,确保干净整洁。

此外,当你需要把成果演示给别人看时(是的你又要做该死的PPT了),你是可以偷懒直接在Jupyter Notebook里做演示的。

找到“View”,点开其中的“Cell Toolbar”,然后是“Slideshow”。每个代码块都在右侧显示一个名为“Slide Type”的下拉选项:

具体效果如何,请自己尝试。

结语

写到这里,本文也就已经差不多结束了,虽然在一篇文章内塞进这么多内容可能会影响阅读体验,但我们还是真诚地希望新手能从中找到一些有用的东西。

赞(1)

收藏

相关话题
文章来源专栏
+关注

评论(0)

加载更多评论

参与评论

相关文章

分享到

QQ空间 QQ好友 微博
取消