翻译 | 张建军javascript
出品 | 人工智能头条(公众号ID:AI_Thinker)html
【人工智能头条导读】Jupyter Notebook 是一个 Web 应用程序,便于建立和共享文学化程序文档,支持实时代码、数学方程、可视化和 Markdown,其用途包括数据清理和转换、数值模拟、统计建模、机器学习等等。目前,数据挖掘领域中最热门的比赛 Kaggle 里的资料都是 Jupyter 格式。对于机器学习新手来讲,学会使用 Jupyter Notebook 很是重要。java
下面这篇 Jupyter Notebook 入门指南由 Pranav Dar 撰写。当你读完这篇文章时,你将会了解,为何你应该利用它来搭建你的机器学习项目,以及为何 Jupyter Notebook 比这个领域的其余标准工具更好!python
▌什么是 Jupyter Notebook?git
Jupyter Notebook 是一款开放源代码的 Web 应用程序,可以让咱们建立并共享代码和文档。程序员
它提供了一个环境,你能够在其中记录代码,运行代码,查看结果,可视化数据并在查看输出结果。这些特性使其成为一款执行端到端数据科学工做流程的便捷工具 ,能够用于数据清理,统计建模,构建和训练机器学习模型,可视化数据以及许多其余用途。github
当你还在构建项目原型时,Jupyter Notebooks 真的特别好用,由于你的代码是被写入独立的单元中并被单独执行的。这容许用户测试项目中的特定代码块,而无需从脚本的开始执行代码。许多其余的 IDE 环境(Integrated Development Environment, 集成开发环境)(如 RStudio )也以其余几种方式作到这一点,但我发现 Jupyter 的单个单元结构是最好的。npm
正如你在本文中将会看到的,这些 Notebooks 是数据科学家手中很是灵活、可交互和强大的工具。他们甚至容许你运行除 Python 之外的其余语言,好比 R 、SQL 等。因为它们比 IDE 平台更具交互性,所以它们被普遍地应用于教学场景。json
▌如何安装 Jupyter Notebook?浏览器
首先你须要在机器上安装 Python,Python 2.7或Python 3.3(或更高版本)均可以。
Anaconda
新用户可使用 Anaconda 发行版来同时安装 Python 和 Jupyter Notebooks。
Anaconda 安装了这两种工具,并包含了数据科学和机器学习社区中经常使用的不少软件包。你能够从这里下载最新版本的Anaconda 。
下载地址:https://jupyter.readthedocs.io/en/latest/install.html
pip 安装方法
若是出于某种缘由,你决定不使用 Anaconda,那么你须要确保你的机器正在运行最新版本的 pip。 怎么作?若是你已经安装了 Python,那么 pip 已经安装好了。要升级到最新的版本,请参照下面的代码:
#Linux and OSX
pip install -U pip setuptools #Windows
python -m pip install -U pip setuptools
一旦 pip 安装完毕,你能够继续安装 Jupyter:
#For Python2
pip install jupyter #For Python3
pip3 install jupyter
你能够在这里(地址:https://jupyter.readthedocs.io/en/latest/install.html)查看官方的 Jupyter 安装文档。
▌开始!
如今咱们已经了解了 Notebooks 是什么,以及如何在本身的机器上安装和设置 Notebooks。是时候开始动动手了!
要运行 Jupyter Notebooks,只需输入如下命令就可开始使用!
jupyter notebook
如图:
执行上面命令以后, Jupyter Notebook 将在你的默认浏览器中打开,网址为:http://localhost:8888/tree
在某些状况下,它可能没法自动打开。这种状况下,你的终端或者命令提示符中将会生成一个带有令牌密钥( token key )的网址。要打开 Notebook,你须要将整个 URL(包括令牌密钥)复制粘贴到浏览器中。
Notebook 打开后,你会在顶部看到三个选项卡:Files(文件),Running(运行)和 Clusters(集群)。Files 基本上列出了全部的文件,Running 显示你当前已经打开的终端和Notebooks,Clusters 由 IPython parallel 包提供,用于并行计算。
要打开一个新的 Jupyter Notebook,请单击页面右侧的“New”选项卡。在这里,你有四个选项可供选择:
⦁ Python 3
⦁ Text File (文本文件)
⦁ Folder (文件夹)
⦁ Terminal (终端)
在 "Text File" 选项中,你会获得一个空白的文档。输入你喜欢的任何字母,单词和数字。它基本上是一个文本编辑器(相似于 Ubuntu 上的应用程序)。你也能够选择一种语言(支持很是多的语言),而后用该语言来写一个脚本。你还能够查找和替换文件中的单词。
在 "Folder" 选项中, 顾名思义它的功能就是建立文件夹。你能够建立一个新文件夹来放入文件,从新命名或者删除它。
"Terminal" 的工做方式与你的 Mac 电脑或 Linux 电脑上的终端彻底相同(或者 Windows 上的 cmd )。它在你的Web浏览器中支持终端会话。在这个终端中输入 python ,瞧!如今你已经能够开始写 python 脚本了。
但在本文中,咱们将重点介绍 Notebooks,所以咱们将从“New”选项中选择 "Python 3" 选项。你会看到以下的截图:
而后,你能够导入最多见的 Python 库——pandas 和 numpy——来开始你的项目。代码上方的菜单栏提供了操做单元格的各类选项:insert (添加),edit (编辑),cut (剪切),move cell up/down (上下移动单元格),run cells(在单元格中运行代码),interupt (中止代码),save (保存工做),以及 restart (从新启动内核)。
在下拉菜单中(如上所示),你有四个选项:
Code - 这是你输入代码的地方
Markdown - 这是你输入文本的地方。你能够在运行代码后添加结论,添加注释等。
Raw NBConvert - 这是一个命令行工具,可将你的笔记本转换为另外一种格式(如 HTML)
Heading - 你能够将标题添加到单独的小节并使你的 Notebook 看起来干净整洁。这个选项如今已经集成到 Markdown 选项中。添加一个“##”,以确保在你以后输入的内容将被视为标题
▌使用 Magic Functions
开发人员已经插入了预约义的 magic functions,使你的工做更方便和更具交互性。你能够运行如下命令来查看这些函数的列表(注意:一般不须要输入“%”,由于一般 Automagic 是默认打开的):
%lsmagic
你会看到许多选项,你甚至可能认识其中的 %clear, %autosave, %debug 和 %mkdir 等函数。magic command 有两种运行方式:
逐行运行( Line-wise )
逐块运行( Cell-wise )
顾名思义, Line-wise 是当你想要执行一个单行命令的时候使用,而 Cell-wise 是你想要执行的命令不只仅是一行,而是整个单元格中的整个代码块时使用。
在逐行运行模式中,全部给定的命令都必须以 % 字符开始,而在逐块运行模式下,全部命令都必须以 %% 开头。让咱们看看下面的例子来更好的理解:
逐行模式:
%time a = range(10)
逐块模式:
%%timeit a = range (10) min(a)
我建议你运行这些命令,看看其中的区别!
▌不只限于 Python - 在 Notebooks 中使用 R,Julia 和JavaScript
Notebooks 的魔术并不止于此。你甚至能够在 Notebooks 中使用其余语言,如 R,Julia,JavaScrip t等。我我的喜欢 R 中的 ggplot2 软件包,所以使用 Notebooks 来进行探索性数据分析很是方便。
要在 Jupyter 中启用 R,你须要 GitHub上提供的 IRKernel( R 的专用内核)。这里有一份详细的指南(地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),总共须要八个步骤,还有截图来引导你一步一步进行操做。
若是你是 Julia 用户,你也能够在 Jupyter Notebooks 中使用它!查看这篇详尽的文章(地址:地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),它重点介绍了 Julia 用户如何学习数据科学,并包括了一章节介绍如何在 Jupyter 环境中使用 Julia。
若是你更喜欢使用 JavaScript,我推荐使用 IJavascript 内核。查看这个 GitHub 库(地址:https://github.com/n-riesco/ijavascript),它会引导你在不一样操做系统上安装此内核。 请注意,你须要先安装 Node.js 和 npm 才能使用它。
▌Jupyter Notebooks 中的交互式命令板
在开始添加小插件(widget)以前,你须要导入 widgets 包:
from ipywidgets import widgets
小插件的基本类型是典型的文本输入框和按钮。请参阅如下来自Dominodatalab 的示例,了解一下交互式小插件是怎么使用的:
你能够在这里(地址:https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/)查看详尽的开发指南。
▌键盘快捷键——节省时间并提升效率!
快捷键是 Jupyter Notebooks 最好用的功能之一。当你想运行任何代码块时,你只须要按下Ctrl + Enter 便可。Jupyter Notebooks 提供的键盘快捷键很是多,为咱们节省了大量时间。
如下是咱们挑选的一些快捷键,你在开始使用 Notebooks 时会常常用到这些快捷键。我强烈建议你阅读这些内容的时候一个一个地尝试一下这些快捷键。
Jupyter Notebook 提供了两种不一样的键盘输入模式 - 命令和编辑。命令模式将键盘与 Notebook 命令绑定,并由具备蓝色左边距的带有灰色单元格边框来表示。编辑模式容许你将文本(或代码)输入活动单元格,并以绿色单元格边框表示。
使用 Esc 和 Enter 在命令和编辑模式之间跳转。如今就试试吧!
一旦进入命令模式(即没有活动单元格),就能够尝试如下快捷键:
A 键将在选中单元格上方插入新单元格,B 键将在选中单元格下方插入一个单元格
要删除单元格,请连续按两次 D 键
要撤消已删除的单元格,请按 Z 键
Y 键将当前的选中单元格变成代码单元格
按住 Shift + 向上或向下箭头键能够选择多个单元格。在多选模式下,按 Shift + M 会合并选中的单元格
F 键会弹出 “查找和替换” 菜单
处于编辑模式时(在命令模式下按 Enter 键进入编辑模式),你会发现如下快捷键很是好用:
Ctrl + Home 转到单元格的开头
Ctrl + S 会保存你的工做
和上面提过的同样,Ctrl + Enter 将运行你的整个单元格
Alt + Enter 不只会运行你的单元格,它还会在下方添加一个新的单元格
Ctrl + Shift + F 打开命令选项板
要查看整个键盘快捷键列表,请在命令模式下按 H 或转到 Help 菜单栏下的 Keyboard shortcuts。请常常检查这些内容,由于常常会有新的快捷键被加进来。
▌有用的 Jupyter Notebooks 扩展
扩展能够有效提升你的 Jupyter Notebooks 的生产力。安装和使用扩展的最佳工具之一是 Nbextensions。它须要两个简单的步骤来安装(也有其余方法,但我发现这是最方便的):
第1步:用 pip 来安装它:
pip install jupyter_contrib_nbextensions
第2步:安装关联的 JavaScript 和 CSS 文件:
jupyter contrib nbextension install --user
完成此操做后,你会在 Jupyter Notebook 主页顶部看到一个 Nbextensions 选项卡。这里面有不少很是棒的扩展供你使用。
要启用一个扩展,只需点击它来激活。我在下面提到了4个我认为最有用的扩展:
Code prettify:从新格式化和美化代码块的内容。
Printview:这个扩展添加了一个工具栏按钮来调用当前 Notebook 的 jupyter nbconvert,并可选择在新的浏览器标签中显示转换后的文件。
Scratchpad:这个扩展增长一个便捷单元格,它可让你运行你的代码而没必要修改你的 Notebook。这是一个很是方便的扩展,特别是当你想要测试你的代码,但不想在你的活动Notebook上作这件事。
Table of Contents (2):这个扩展能够收集你的 Notebook 中的全部标题,并将它们显示在一个浮动窗口中。
这些只是你可使用的其中一些扩展。我强烈建议查看整个扩展列表并对它们进行测试。
▌保存和共享你的 Notebook
这是 Jupyter Notebook 中最重要和最棒的功能之一。当我须要写博客文章,但个人代码和注释都保存在 Jupyter 文件中时,我须要先将它们转换为另外一种格式。请记住,这些 Notebooks 采用 json 格式,在共享它时这并非颇有帮助。我没法在电子邮件或博客上发布不一样的单元格或代码块,对吧?
进入 Files 菜单,你会看到一个 Download As 选项:
你能够将你的 Notebook 保存为 7 个选项中的任何一个。最经常使用的是 .ipynb 文件,这样其余人就能够在本身的机器上复制代码;或者保存为 .html 文件, 这样会打开一个网页(当你想要保存嵌入在 Notebook 中的图像时,这会派上用场)。
你也可使用 nbconvert 选项手动将你的 Notebook 转换为不一样的格式,如 HTML 或 PDF。
你还可使用 jupyterhub,它容许你在其服务器上托管 Notebooks 并与多个用户共享。许多顶尖的研究项目都使用这个功能用于协做。
▌JupyterLab
JupyterLab 于今年 2 月推出,它容许以更灵活和更强大的方式处理项目,但使用的是和 Jupyter Notebooks 相同的组件。JupyterLab 环境与 Jupyter Notebooks 彻底相同,但用户会有更高效的体验。
在 JupyterLab 中,你只需一个窗口便可安排 Notebook 的工做区域、终端、文本文件和输出!你要作的仅仅是将单元格拖放到你想要的位置。你还能够经过实时预览功能来编辑经常使用文件格式,如 Markdown、CSV 和 JSON,以便在实际文件中实时查看所发生的变化。
若是你想在你的机器上试用它,你能够在这里查看安装说明(地址:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)。 开发人员的目标是 JupyterLab 最终能够取代 Jupyter Notebooks。可是,要作到这一点还要花点时间。
▌最佳实践
虽然单独工做可能颇有趣, 但大多数时候你会发现本身是在一个团队中工做。在这种状况下,遵循指导方针和最佳实践很是重要,这样能够确保你的代码和 Jupyter Notebooks 被正确标注,以便与你的团队成员保持一致。下面我列出了一些最佳实践指南,你在 Jupyter Notebooks 上工做时必定要遵循如下指南:
对于任何程序员来讲最重要的事情之一:始终确保为代码添加合适的注释!
确保你有代码所需的文档。
考虑一个命名方案,并坚持在全部代码中使用以确保一致性。这样其余人更容易读懂你的代码。
不管你须要什么库,在 Notebooks 开始时导入它们(并在它们旁边添加注释,说明导入它们的目的)。
确保代码中行与行之间有适当间隔,不要把循环和函数放在同一行中。
有时候你会发现你的文件变得很是繁重。看看有没有方法隐藏你认为对于之后参考不过重要的代码。 Notebooks 看起来整洁干净, 让人赏心悦目也很是重要。
Matplotlib 能够很漂亮整洁地展现你的 Notebook,看看怎么使用它!
地址:http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb
另外一个提示! 当你想建立演示文稿时,首先想到的工具是 PowerPoint 和 Google Slides。其实你的 Jupyter Notebooks 也能够建立幻灯片!还记得我说它超级灵活吗? 我一点都没有夸大。
要将你的 Notebooks 转换为幻灯片,请转到 View -> Cell Toolbar,而后单击 Slideshow。看!如今,每一个代码块都在右侧显示一个 Slide Type 的下拉选项。它提供了如下 5 个选项:
好好试一试每个选项以更好地理解它,它会改变你呈现你的代码的方式!
▌结语
请注意,这篇文章并无详尽列出 Jupyter Notebooks 提供的全部功能。还有更多的功能等着你在使用中挖掘。和其余不少事情同样,关键在于实践。
最后分享一个 GitHub 库(地址:https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks),里面有不少有用的内容。