前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
简介
Jupyter Notebook 是一个开源的 Web 应用程序,可以让你创建和分享交互式代码、可视化等内容。这个工具可以与多种编程语言一起使用,包括 Python、Julia、R、Haskell 和 Ruby。它经常用于处理数据、统计建模和机器学习。
本教程将指导你在 Ubuntu 18.04 服务器上设置 Jupyter Notebook,并教你如何连接和使用 Notebook。Jupyter Notebooks (或简称 Notebooks)是由 Jupyter Notebook 应用程序生成的文档,其中包含计算机代码和丰富的文本元素(段落、方程式、图表、链接等),有助于展示和分享可重现的研究。在本指南的最后一步,你将在远程服务器上运行一个运行 Python 3 代码的 Jupyter Notebook。
先决条件
为了完成本指南,你需要一个配置了防火墙和具有 sudo 权限的非 root 用户的 Ubuntu 18.04 服务器实例。你可以通过运行我们的初始服务器设置教程来进行设置。
步骤 1 --- 设置 Python
首先,安装 Ubuntu 仓库中的 Python 编程环境的依赖项。Ubuntu 18.04 预装了 Python 3.6.9。稍后你将使用 Python 包管理器 pip 来安装额外的组件。
首先,更新本地的 apt
包索引:
command
sudo apt update
接下来,安装 pip 和 Python 头文件,这些文件将被 Jupyter 的一些依赖项使用:
command
sudo apt install python3-pip python3-dev
现在,你可以继续设置 Python 虚拟环境。
步骤 2 --- 为 Jupyter 创建 Python 虚拟环境
安装了一些依赖项后,你可以创建一个 Python 虚拟环境来管理你的项目。Jupyter 将安装到这个虚拟环境中。
你将需要访问 virtualenv
命令,它可以通过 pip 安装。
首先,通过输入以下命令来升级 pip:
command
sudo -H pip3 install --upgrade pip
然后使用以下命令安装 virtualenv
:
command
sudo -H pip3 install virtualenv
-H
标志确保安全策略将 home
环境变量设置为目标用户的主目录。
安装了 virtualenv
后,你可以开始创建你的环境。创建并进入一个可以保存项目文件的目录。以下示例目录名为 my_project_dir
。使用一个对你来说有意义的名称和你正在处理的内容。
通过输入以下命令来创建你的目录:
command
mkdir ~/my_project_dir
使用以下命令进入 my_project_dir
:
command
cd ~/my_project_dir
在项目目录中,创建一个 Python 虚拟环境。本教程将把这个环境称为 my_project_env
,但你可以使用与你的项目相关的名称。
command
virtualenv my_project_env
这将在你的 my_project_dir
目录中创建一个名为 my_project_env
的目录。在其中,它将安装一个本地版本的 Python 和一个本地版本的 pip。你可以使用它来安装和配置 Jupyter 的隔离 Python 环境。
在安装 Jupyter 之前,激活虚拟环境。你可以通过输入以下命令来执行:
command
source my_project_env/bin/activate
你的提示符应该会改变,指示你现在正在一个 Python 虚拟环境中操作,类似于这样:
custom_prefix((my_project_env)\ssammy@host:~/my_project_dir$)
你现在已经准备好在这个虚拟环境中安装 Jupyter 了。
步骤 3 --- 安装 Jupyter
在你的虚拟环境激活状态下,使用本地的 pip 安装 Jupyter。
custom_prefix((my_project_env)\ssammy@host:~/my_project_dir$)
pip install jupyter
到目前为止,你已经成功安装了运行 Jupyter 所需的所有软件。现在你可以启动 Notebook 服务器。
步骤 4 --- 运行 Jupyter Notebook
现在你已经准备好运行 Jupyter Notebook 所需的一切。要运行它,请执行以下命令:
custom_prefix((my_project_env)\ssammy@host:~/my_project_dir$)
jupyter notebook
Jupyter Notebook 的活动日志将被打印到终端。当你运行 Jupyter Notebook 时,它会运行在一个特定的端口号上。通常,你第一次运行的 Notebook 将使用端口 8888
。要检查 Jupyter Notebook 正在运行的具体端口号,请参考用于启动它的命令的输出:
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret
[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir
[I 21:23:21.361 NotebookApp] The Jupyter Notebook 6.4.10 is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] or http://127.0.0.1:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.
[C 21:23:21.361 NotebookApp]
To access the notebook, open this file in a browser:
file:///home/sammy/.local/share/jupyter/runtime/nbserver-7924-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
or http://127.0.0.1:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
如果你在本地计算机上运行 Jupyter Notebook(而不是在服务器上),你可以访问显示的 URL 来连接到 Jupyter Notebook。如果你在服务器上运行 Jupyter Notebook,你将需要使用 SSH 隧道连接到服务器,如下一节所述。
此时,你可以保持 SSH 连接打开并保持 Jupyter Notebook 运行,或者你可以退出应用程序,并在设置了 SSH 隧道后重新运行它。
如果你想停止 Jupyter Notebook 进程,按下 CTRL + C
,输入 Y
,然后按 ENTER
确认。将显示以下输出:
[C 19:23:34.939 NotebookApp] Shutdown confirmed
[I 19:23:34.940 NotebookApp] Shutting down 0 kernels
[I 19:23:34.941 NotebookApp] Shutting down 0 terminals
现在,你可以设置一个 SSH 隧道来访问 Notebook。
第五步 --- 使用 SSH 隧道连接服务器
Jupyter Notebook 在服务器上运行在特定的端口上(例如 :8888
、:8889
等)。SSH 隧道使您能够安全地连接到服务器的端口。
接下来的两个小节将介绍如何在 Mac、Linux 和 Windows 操作系统上创建 SSH 隧道。请参考适用于您本地计算机的小节。
在 Mac 或 Linux 上使用 SSH 隧道
如果您使用的是 Mac 或 Linux,创建 SSH 隧道的步骤类似于使用 SSH 登录到远程服务器,只是在 ssh
命令中有额外的参数。
可以通过在新的本地终端窗口中运行以下 SSH 命令来进行 SSH 隧道:
command
[本地环境]
ssh -L 8888:localhost:8888 your_server_username@your_server_ip
ssh
命令打开了一个 SSH 连接,但 -L
指定了要将本地(客户端)主机上的给定端口转发到远程端(服务器)上的给定主机和端口。这意味着服务器上运行在第二个端口号(例如 8888
)上的内容将显示在本地计算机上的第一个端口号(例如 8888
)上。
可选择将端口 8888
更改为您选择的端口,以避免使用已被其他进程占用的端口。
server_username
是您在服务器上创建的用户名(例如 sammy),your_server_ip
是您服务器的 IP 地址。
例如,对于用户名 sammy
和服务器地址 203.0.113.0
,命令将是:
command
[本地环境]
ssh -L 8888:localhost:8888 sammy@203.0.113.0
如果在运行 ssh -L
命令后没有错误消息,您可以进入编程环境并运行 Jupyter Notebook:
custom_prefix((my_project_env)sammy@your_server:~/my_project_dir$)
jupyter notebook
您将收到一个带有 URL 的输出。从本地计算机的 Web 浏览器中,使用以 http://localhost:8888
开头的 URL 打开 Jupyter Notebook Web 界面。确保包括令牌号码,或在 http://localhost:8888
提示时输入令牌号码字符串:
...
[I 21:23:21.361 NotebookApp] The Jupyter Notebook 6.4.10 is running at:
[I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
...
在 Windows 和 Putty 中使用 SSH 隧道
如果您使用的是 Windows,可以使用 Putty 创建 SSH 隧道。
首先,在 主机名(或 IP 地址) 字段中输入服务器的 URL 或 IP 地址,如下所示:
!设置 SSH 隧道的主机名
接下来,点击左侧窗格底部的 SSH 以展开菜单,然后点击 Tunnels 。输入您想要用于在本地计算机上访问 Jupyter 的本地端口号。选择 8000
或更大的端口号以避免被其他服务使用,并将目的地设置为 localhost:8888
,其中 :8888
是 Jupyter Notebook 运行的端口号。
点击 Add 按钮,端口应该出现在 Forwarded ports 列表中:
!转发端口列表
最后,点击 Open 按钮以通过 SSH 连接到服务器并隧道传输所需的端口。在 Web 浏览器中导航到 http://localhost:8000
(或您选择的端口)以连接到运行在服务器上的 Jupyter Notebook。确保包括令牌号码,或在 http://localhost:8000
提示时输入令牌号码字符串。
无论您是在 Mac/Linux 操作系统还是 Windows 上连接,您现在应该通过 SSH 隧道连接到您的服务器。您现在可以在 Web 浏览器中使用 Jupyter Notebook 了。
第六步 --- 使用 Jupyter Notebook
如果您当前没有运行 Jupyter Notebook,请使用 jupyter notebook
命令启动它:
custom_prefix((my_project_env)sammy@your_server:~/my_project_dir$)
jupyter notebook
现在您应该可以在 Web 浏览器中连接到它。Jupyter Notebook 是一个非常强大的工具,具有许多功能。本节将概述一些基本功能,以帮助您开始使用 Notebook。Jupyter Notebook 将显示从其所在目录中运行的所有文件和文件夹,因此在工作项目时,请确保从项目目录中启动它。
要创建一个新的 Notebook 文件,请从右上角的下拉菜单中选择 New > Python 3:
!创建一个新的 Python 3 notebook
这将打开一个 Notebook。您现在可以在单元格中运行 Python 代码,或将单元格更改为 Markdown。例如,通过点击顶部导航栏中的 Cell > Cell Type > Markdown ,将第一个单元格更改为接受 Markdown。现在,您可以使用 Markdown 写笔记,甚至可以在 $$
符号之间放置 LaTeX 编写的方程式来包含方程式。例如,将以下内容键入到更改为 markdown 的单元格中:
# 第一个方程式
现在让我们实现以下方程式:
$$ y = x^2$$
其中 $x = 2$
要将 markdown 转换为富文本,请按 CTRL + ENTER
,结果应该如下所示:
!markdown 的结果
您可以使用 markdown 单元格来记录代码并记录您的代码。要实现该方程式并打印结果,请单击顶部单元格,然后按 ALT + ENTER
在其下方添加一个单元格。在新单元格中输入以下代码。
python
x = 2
y = x**2
print(y)
要运行代码,请按 CTRL + ENTER
。您将收到以下结果:
!第一个方程式的结果
现在,您可以导入模块并像在任何其他 Python 开发环境中一样使用 Notebook。
结论
现在,您应该能够使用 Jupyter Notebook 在 Markdown 中编写可重现的 Python 代码和笔记。要从界面内部快速了解 Jupyter Notebook,请选择顶部导航菜单中的 帮助 > 用户界面导览。
从这里开始,您可以通过阅读《使用 pandas 和 Python 3 在 Jupyter Notebook 中进行数据分析和可视化》来开始数据分析和可视化项目。
如果您对深入了解感兴趣,可以阅读我们的时间序列可视化和预测系列文章。