2018 年 2 月

第 33 卷,第 2 期

此文章由机器翻译

人工智能 - 使用 Jupyter Notebook

通过Frank La La |年 2 月 2018

Frank La VigneJupyter 笔记本是一种开放源,允许用户创建和共享包含实时代码中,可视化效果和文本的文档的基于浏览器的工具。Jupyter 笔记本不本身应用程序开发环境。相反,它们提供交互式"缓冲存储区",可以浏览和体验过数据。它们提供对各种编程语言,例如 Python 或 R,一个基于浏览器的交互式外壳,并提供数据科学家和工程师通过提供一个平台,可以共享代码、 观察值和可视化效果快速试用数据的方法。笔记本可以本地运行的电脑上或在云中通过各种服务,并且浏览数据集和感受对新编程语言的好办法。对于开发人员熟悉更传统的 IDE,但是,它们可能会非常在第一个。

Jupyter 笔记本的结构

Jupyter 笔记本包含一系列"单元格"排列的线性序列中。每个单元格可以是文本或代码。在 MarkDown,使用纯文本格式设置语法的轻量的标记语言中,文本单元格的格式设置。代码的单元格包含与特定的笔记本关联的语言中的代码。Python 笔记本只有 Python 代码和不 R、 时执行的 R notebook 可以执行 R 和不 Python。

图 1显示为示例文件数据科学虚拟机上的可用 IntroToJupyterPython 笔记本。请注意用于显示与 Python 2 运行时相连粘贴到笔记本的浏览器窗口右上角笔记本的语言标识符。右侧的"Python 2"圆圈指示内核的当前状态。实心的圆圈表示内核正在使用中,执行程序。空心圆指示内核处于空闲状态。此外请记下粘贴到笔记本的正文包含文本,以及代码和图表的绘图。

引入 Jupyter 笔记本的核心功能的教程笔记本
图 1 教程笔记本简介 Jupyter 笔记本的核心功能

在 Azure 笔记本中创建 Jupyter 笔记本

有几个选项来运行 Jupyter 笔记本。但是,若要开始的最快方法是通过使用 Azure 笔记本服务,在撰写本文时处于预览模式。通过浏览到notebooks.azure.com并使用你的 Microsoft ID 凭据登录。如果出现提示,授予该应用程序系统会要求提供的权限。对于第一个时间用户,站点将提示你输入一个公共用户 id。这将创建承载你的配置文件和共享笔记本的 URL。如果不希望此设置在此时间,请单击"不,谢谢。" 否则为输入一个值,然后单击保存。

现在,屏幕将显示配置文件页面。Azure 笔记本服务存储库中的 Jupyter 笔记本。若要创建笔记本,你必须先创建一个库。在库下没有一个按钮来添加库。单击它以创建新的库。在遵循对话框中,输入的库和 URL 的 ID,它可以共享的名称。如果你想要公开此库,请检查"公用库。"旁边的框 选中或取消选中"创建 README.md"旁边的框将自动插入针对文档用途的 README.md 文件。单击创建来创建新的库。

现在,你的配置文件页将具有一个列出的库。单击它以打开库内容。现在,唯一的项是 README.md 文件。单击新建按钮以添加新项。在接下来的对话框中,输入新项目的名称并从下拉列表项类型旁边的列表中选择 Python 3.6 笔记本,然后单击新建。

后创建项后,它将显示在使用的库。IPYNB 文件扩展名。单击它以启动 Jupyter 服务器在 Azure 中的实例。请注意,将打开一个新的浏览器选项卡或窗口和界面看起来更像是中的屏幕图 1。在文本框内单击,然后编写以下代码:

print("Hello World!")

从页面顶部的单元格菜单中选择运行的单元格。屏幕应如下所示图 2

世界您好!Jupyter 笔记本中
图 2 Hello World !Jupyter 笔记本中

单击内的空白单元格添加该 Jupyter 和选择单元格 > 单元格类型 > 从菜单栏中的 Markdown。然后添加以下文本。

# This is markdown text #
Markdown is a versatile and lightweight markup language.

单击保存图标并关闭浏览器选项卡。返回在库窗口中,在 notebook 文件上再次单击。将重新加载页面,markdown 格式将会生效。

接下来,添加另一个代码单元,通过单击 markdown 单元格,然后从插入菜单选择下方插入单元格。以前,我说,无法在 Python 笔记本中执行仅 Python 代码。不完全如此,因为你可以使用"!"命令问题 shell 命令。此新的单元格中输入以下命令。

! ls -l

从运行菜单中选择运行的单元格,或单击播放/暂停符号在其上的图标。该命令将返回目录,其中包含 notebook 文件和 README.md 文件的内容的列表。同样,Jupyter 在响应后添加空白单元格。空白单元格中键入以下代码:

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
x = np.random.rand(100)
y = np.random.rand(100)
plt.scatter(x, y)
plt.show()

运行该单元格,并在一段时间后散点图将显示在结果中。对于熟悉 Python,第一行代码可能看起来不太熟悉,因为它是 IPython 内核后者在 Jupyter 笔记本中执行 Python 代码的一部分。命令 %matplotlib 内联指示 IPython 运行时显示由 matplotlib 串联结果生成的关系图。这种类型的命令,称为"幻"命令,以"%"开头。神奇的命令的完整浏览保证其自己的文章。神奇的命令的详细信息,请参阅 IPython 文档在bit.ly/2CfiMvh

对于那些不熟悉 Python,以上代码段导入两个库,NumPy 和 Matplotlib。NumPy 是用于科学计算 (numpy.org) 的 Python 包和 Matplotlib 是绘制 for Python (matplotlib.org) 库的常用二维关系图。然后,代码将生成两个 100 的随机数字数组,并将结果绘制成散点图。代码的最后一行显示关系图。随机生成的数字,关系图将更改略有每次执行单元格。

ML Workbench 中的笔记本

到目前为止,我已演示运行 Jupyter 网络了云中的 Azure 笔记本服务的一部分。但是,本地,也可以运行 Jupyter 笔记本。事实上,Jupyter 笔记本集成到 Azure 机器学习 Workbench 产品。在我以前的文章,我将证明示例 Iris 分类项目。尽管本文未提到它,还有项目创建一个模型,以及 3D 绘图的 iris 数据集所需的所有步骤的详细信息中包含的笔记本。

若要查看它,请从上个月的列中,"创建模型在 Azure ML Workbench"打开 Iris 分类器示例项目 (msdn.com/magazine/mt814992)。如果你未创建项目,请按照从模板创建项目的项目中的说明。在项目中中, 所示图 3、 第三个图标 (1) 从顶部的窗口中,左侧的垂直工具栏上单击,然后单击 iris (2) 中的文件列表。

在 Azure 机器学习 Workbench 项目中查看笔记本
在 Azure 机器学习 Workbench 项目中查看笔记本的图 3

Notebook 文件加载,但 notebook 服务器未运行 — 显示的结果缓存从上一次执行。若要实现粘贴到笔记本的交互性,单击启动 Notebook 服务器 (3) 按钮以激活本地 notebook 服务器。

向下滚动到紧跟 3D 图形的空白单元格并输入以下代码以查看 iris 数据集中的前五个记录:

iris.head(5)

从插入菜单中选择下方插入单元格并输入到要显示的相关矩阵的空单元格的以下代码:

iris.corr()

输出应如下所示图 4

Iris 数据集的相关矩阵
图 4 Iris 数据集的相关矩阵

相关矩阵将显示在数据集中的各个字段之间的相关系数。相关系数测量具有到 1,该值指示正相关和为-1 指示负相关的值更接近的值更接近的两个变量之间的线性相关性。为 0 的值更接近表明两个字段之间的关联不足。例如,没有强和之间的相关性花瓣宽度花瓣长度值的 0.962757。另一方面,花萼宽度和花萼长度之间的关联是值为-0.109369 更弱。当然,每个字段都有与其自身 1.0 相关。

Anacondas

到目前为止,我已作为 Microsoft 云服务或本地使用 Microsoft 软件的一部分来仅使用 Jupyter 笔记本。但是,Jupyter 属于开放源代码,可以运行独立于 Microsoft 生态系统。一个常用的工具集,则 Anaconda (anaconda.com/download),Python 和 R for Windows、 Mac 和 Linux 的开放源代码分布。Jupyter 作为此安装的一部分提供。本地运行 Jupyter 初始化 8888 端口上的本地 Web 服务器。请注意,在我系统上,我只能创建 Python 3 笔记本,它是仅在我的 PC 安装的内核。

数据科学虚拟机

本地运行的 Jupyter 笔记本服务器非常适合用于 Internet 访问不可靠或有保证的位置的方案。对于更多的计算密集型任务,它可能更聪明创建虚拟机并在更强大的硬件上运行 Jupyter。为了简化此任务,Azure 提供数据科学虚拟机映像为 Windows 和 Linux 上的已安装的最常用数据科学工具。

从此映像创建 VM 是快速而简单。从 Azure 门户中,单击新建图标并搜索数据科学虚拟机的"提供了多种选择。但是,我已发现的 Ubuntu 映像是最功能-打包。按照向导中的步骤创建虚拟机并选择 Linux (Ubuntu) 映像数据科学虚拟机。启动并运行计算机后,配置用于远程桌面访问 VM。请参阅如何连接到在 Linux VM 上的文档bit.ly/2qgHOZo

连接到计算机时,双击桌面上的 Jupyter 图标。将打开一个终端窗口,片刻之后再跟一个浏览器窗口。单击新建按钮以创建新的笔记本,有相当多的多个选择的环境和语言,如中所示图 5

运行时可用于 Ubuntu 数据科学虚拟机
图 5 运行时可用于 Ubuntu 数据科学虚拟机

不同的运行时环境,以及适用于 Ubuntu 数据科学虚拟机包括大量示例笔记本。这些笔记本提供了更高级主题,例如 CNTK 和 TensorFlow 的 Azure ML 的基础知识的所有内容的指导信息。

总结

Jupyter 笔记本是至关重要的数据科学工作,但他们往往会将许多开发人员的混淆,因为平台缺少开发软件所需的基本功能。这是设计使然。Jupyter 笔记本不用于该任务。

笔记本所做的就是提供数据科学家可以浏览数据集、 试验不同的假设和与同事共享观测值的协作机制。Jupyter 笔记本可以 PC、 Mac 或 Linux 上本地运行。Azure ML Workbench 甚至还包括嵌入到更容易实验数据产品 notebook 服务器。此外可以在云中作为服务,如 Azure 笔记本,或使用功能更强大的硬件的 VM 上的一部分运行笔记本。


Frank La Vigne 负责领导 Wintellect 的数据与分析实践,共同主持 DataDriven 播客。他博客定期在 FranksWorld.com 并且你可以在他的 YouTube 频道,"Frank 的 World 电视"上观看他 (FranksWorld.TV)。

衷心感谢以下技术专家对本文的审阅:Andy Leonard


在 MSDN 杂志论坛讨论这篇文章