玩转 Jupyter Notebook (CentOS)
玩转 Jupyter Notebook (CentOS)
Jupyter Notebook 简介
Jupyter Notebook 是一个开源的 Web 应用程序,可以用来创建和共享包含动态代码、方程式、可视化及解释性文本的文档。其应用于包括:数据整理与转换,数值模拟,统计建模,机器学习等等。更多信息请见官网 。
1. 检查 Python 环境
1.1 查看 Python 版本
CentOS 7.2 中默认集成了 Python 2.7,可以通过下面命令检查 Python 版本:
python --version
1.2 安装 pip
pip 是一个 Python 包管理工具,我们使用 yum 命令来安装该工具:yum -y install python-pip
;使用下面命令升级 pip 到最新版本:pip install --upgrade pip
1.3 安装相关依赖
安装 Jupyter 过程中还需要其他一些依赖,我们使用以下命令安装他们:
yum -y groupinstall "Development Tools"
yum -y install python-devel
2. 配置虚拟环境
2.1 安装 virtualenv
我们将为 Jupyter 创建一个独立的虚拟环境,与系统自带的 Python 隔离开来。为此,先安装 virtualenv 库:
pip install virtualenv
2.2 创建虚拟环境
创建一个专门的虚拟环境,并直接激活进入该环境:
virtualenv venv
source venv/bin/activate
2.3 安装 Jupyter
使用pip进行安装:pip install jupyter
3. 配置 Jupyter Notebook
3.1 建立项目目录
我们先为 Jupyter 相关文件准备一个目录:
mkdir /data/jupyter
cd /data/jupyter
再建立一个目录作为 Jupyter 运行的根目录:
mkdir /data/jupyter/root
3.2 准备密码密文
由于我们将以需要密码验证的模式启动 Jupyter,所以我们要预先生成所需的密码对应的密文。
生成密文,使用下面的命令,创建一个密文的密码:
python -c "import IPython;print IPython.lib.passwd()"
执行后需要输入并确认密码,然后程序会返回一个'sha1:...'的密文,我们接下来将会用到它。
3.3 修改配置
3.3.1 生成配置文件
我们使用 --generate-config 来参数生成默认配置文件:
jupyter notebook --generate-config --allow-root
生成的配置文件在 /root/.jupyter/ 目录下,可以点此编辑配置。
3.3.2 修改配置
然后在配置文件最下方加入以下配置:
c.NotebookApp.ip = '*'
c.NotebookApp.allow_root = True
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = u'刚才生成的密文(sha:...)'
c.ContentsManager.root_dir = '/data/jupyter/root'
其中:c.NotebookApp.password 请将上一步中密文填入此项,包括 sha: 部分。
你也可以直接配置或使用 Nginx 将服务代理到 80 或 443 端口。
4. 启动 Jupyter Notebook
4.1 直接启动
使用以下指令启动 Jupyter Notebook:
jupyter notebook
此时,访问“http://<您的 CVM IP 地址>:8888”即可进入 Jupyter 首页。
4.2 创建 Notebook
进入【首页】首先需要输入前面步骤中设置的密码。
然后点击右侧的【 new 】,选择 Python2 新建一个 notebook,这时跳转至编辑界面。
现在我们可以看到 /data/jupyter/root/ 目录中出现了一个 Untitled.ipynb 文件,这就是我们刚刚新建的 Notebook 文件。我们建立的所有 Notebook 都将默认以该类型的文件格式保存。
4.3 后台运行
直接以 jupyter notebook 命令启动 Jupyter 的方式在连接断开时将会中断,所以我们需要让 Jupyter 服务在后台常驻。
先按下 Ctrl + C 并输入 y 停止 Jupyter 服务,然后执行以下命令:
nohup jupyter notebook > /data/jupyter/jupyter.log 2>&1 &
该命令将使得 Jupyter 在后台运行,并将日志写在 /data/jupyter/jupyter.log 文件中。
4.4 准备后续步骤的 Notebook
为了后面实验中实验室的步骤检查器能够更好的工作,此时我们使用以下命令预先创建几份 ipynb 文件:
cd /data/jupyter/root
cp Untitled.ipynb first.ipynb
cp Untitled.ipynb matplotlib.ipynb
cp Untitled.ipynb tensorflow.ipynb
rm -f Untitled.ipynb
5. 使用 Jupyter Notebook
5.1 打开 first.ipynb 编辑界面
接下来的步骤中如遇到步骤检查未通过,请按下 Ctrl + S 保存,等待步骤检查器确认。
编辑界面
Jupyter Notebook 的编辑界面主要由 工具栏 和 内容编辑区 构成。
下方编辑区,由 Cell 组成。每个 notebook 由多个 Cell 构成,每个 Cell 都可以有不同的用途。
5.2 Code Cell
新建的 notebook 中包含一个代码 Cell(Code Cell),以“[ ]”开头,在该类型的 Cell 中,可以输入任意代码并执行。如输入:
1 + 1
然后按下 Shift + Enter 键, Cell 中代码就会被执行,光标也会移动至下个新 Cell 中。我们接着输入:print('Hello Jupyter')
再次按下 Shift + Enter ,可以看到这次没有出现 “Out[..]” 这样的文字。这是因为我们只打印出来了某些值,而没有返回任何的值。
按下 Ctrl + S 保存,等待步骤检查器确认。
5.3 Heading Cell
新版本中已经没有独立的 Heading Cell,现在标题被整合在 Markdown Cell 之中。
如果我们想在顶部添加一个的标题。选中第一个 Cell,然后点击 Insert -> Insert Cell Above 。
你会发现,文档顶部马上就出现了一个新的 Cell。点击在工具栏中 Cell 类型(默认为 Code),将其变成 Markdown。接着在 Cell 中写下:# My First Notebook
然后按下 Shift + Enter 键,便可以看到生成了一行一级标题。
与 Markdown 语法相同,使用多个#将改变标题级别。
5.4 Markdown Cell
上一步中我们已经尝试了使用了 Markdown Cell。在该 Cell 中,除标题外其他语法同样支持。比如,我们在一个新的 Cell 中插入以下文本:
This is a **table**:
| Name | Value |
|:----:|:-----:|
| A | 1 |
| B | 2 |
| C | 3 |
然后按下 Shift + Enter,即可渲染出相应内容。
5.5 高级用法 - HTML
Markdown Cell 中同样接受 HTML 代码。这样,你就可以实现更加丰富的样式及结构、添加图片等等。
例如,如果想在 notebook 中添加 Jupyter 的 logo,并且添加 2px 的黑色边框,放置在单元格左侧,可以这样编写:
<img src="http://jupyter.org/assets/nav_logo.svg" style="border: 2px solid black; float:left" />
然后按下 Shift + Enter,即可渲染出图片。
5.6 高级用法 - LaTex
Markdown Cell 还支持 LaTex 语法。在 Cell 中插入以下文本:$$int_0^{+infty} x^2 dx$$
同样按下 Shift + Enter,即可渲染出公式。
5.7 导出
notebook 支持导出导出为 HTML、Markdown、PDF 等多种格式。
如点击 File -> Download as -> HTML(.html),即可下载到 HTML 版本的 notebook。
5.8 导出 PDF
其中,导出 PDF 需要其他包的支持,我们需要使用以下命令安装这些依赖:yum -y install pandoc texlive-*
- 注:直接导出 PDF 时 Jupyter 可能会忽略一些 Cell,建议先导出为 HTML,然后使用浏览器将其转为 PDF。
6. 集成 Matplotlib(可选)
Matplotlib 是 Python 中最常用的可视化工具之一,可以非常方便地创建许多类型的 2D 图表和基本的 3D 图表。
6.1 安装 Matplotlib
我们使用 pip 来安装 Matplotlib:pip install matplotlib
6.2 测试 Matplotlib
我们使用另一个 notebook (matplotlib.ipynb)来测试 Matplotlib。
点击这里打开 matplotlib.ipynb 编辑界面。
魔法命令:在第一个 Cell 中,我们插入并执行:%matplotlib inline
这是指定 matplotlib 图表的显示方式的魔法命令。inline 表示将图表嵌入到 notebook 中。
7. 测试
关于 Matplotlib 的使用请移步其官网。在接下来 Cell 中,我们插入几个官方示例测试:
7.1 plot_bmh:
示例代码:/plot_bmh.py
from numpy.random import beta
import matplotlib.pyplot as plt
plt.style.use('bmh')
def plot_beta_hist(ax, a, b):
ax.hist(beta(a, b, size=10000), histtype="stepfilled",
bins=25, alpha=0.8, normed=True)
fig, ax = plt.subplots()
plot_beta_hist(ax, 10, 10)
plot_beta_hist(ax, 4, 12)
plot_beta_hist(ax, 50, 12)
plot_beta_hist(ax, 6, 55)
ax.set_title("'bmh' style sheet")
plt.show()
按 Shift + Enter 执行 Cell,即可看到绘制出的图像。
7.2 whats_new_99_mplot3d:
示例代码:/whats_new_99_mplot3d.py
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.viridis)
plt.show()
同样执行 Cell,即可看到绘制出的图像。
7.3 动手试试
最后,我们来尝试绘制一个二次函数图像,你可以自行实现,也可以参考下面代码:
示例代码:/my.py
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(-10, 11)
y = x**2
plt.plot(x, y)
plt.show()
8. 搭配 TensorFlow(可选)
TensorFlow™ 是一个采用数据流图,用于数值计算的开源软件库。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。
TensorFlow 最初由 Google 大脑小组的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。
8.1 安装 TensorFlow
我们使用 pip 安装相关依赖及 Tensorflow
pip install protobuf
pip install tensorflow
8.2 测试 TensorFlow
关于 TensorFlow 的使用请移步其TensorFlow官网,这里只是测试其在 Jupiter 中是否可用
打开 tensorflow.ipynb 编辑界面。在 Cell 中加入以下代码(整理自官网 MNIST 教程):
示例代码:/tensorflow.py
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
# The MNIST Data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# Regression
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# Training
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
# Evaluating
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
按下 Shift + Enter,学习过程结束后可以看到输出了准确率(92% 左右)。
恭喜!您已经成功搭建起了一个云端的 Jupyter Notebook 环境。你可以选择保留已经运行的服务,继续进行 Jupyter Notebook 的使用。
玩转 Jupyter Notebook (CentOS)的更多相关文章
- 配置基于centos下的远程Jupyter Notebook访问
最近在学习一些服务器上的操作,学着熟悉Liunx系统,记录下自己踩过的坑吧 1.开机后更新系统: yum -y upgrade yum - y update 2.查看已安装的应用 yum list 3 ...
- 使用centos linux vps搭建jupyter notebook踩坑日记
今天我尝试用vps搭建在线jupyter notebook网站时遇到了这样一个问题: [W 21:48:07.243 NotebookApp] SSL Error on 9 ('171.115.101 ...
- [python] [Jupyter Notebook]
最近又要用notebook 转一篇我原来写的安装教程 还是很好用的. IPython是一个 Python 的一个交互式 shell,它提供了很多内建的函数.Jupyter Notebook是IPyt ...
- jupyter notebook添加虚拟环境
原本以为,当进入虚拟环境之后,再运行jupyter notebook应该是这个环境下的jupyter,比如我默认创建一个文件,这个文件调用的编译器应该是这个虚拟环境中的编译器,实际上并不是 当你进入j ...
- 在服务器搭建Jupyter notebook
安装 Jupyter Notebook (这里虽然是对centos和Python2的,但是在Ubuntu16.04,Python3同样可以照着弄) Jupyter Notebook 简介 Jupyte ...
- 本地主机访问远程linux系统服务器上的jupyter notebook
1,机器情况:服务器 centos python环境已经配置好了,在虚拟环境下安装了anaconda 并且在里面安装了jupyter notebook 2,主机是 windows ipytho ...
- 基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境
基于Ubuntu+Python+Tensorflow+Jupyter notebook搭建深度学习环境 前言一.环境准备环境介绍软件下载VMware下安装UbuntuUbuntu下Anaconda的安 ...
- 【原创】JavaFx程序解决Jupyter Notebook导出PDF不显示中文
0.ATTENTION!!! JavaFx里是通过Java调用控制台执行的的jupyter和xelatex指令, 这些个指令需要在本地安装Jupyter和MikTeX之后才能正常在电脑上运行 1.[问 ...
- 远程访问jupyter notebook
远程访问Jupyter Notebook Jupyter Notebook很好用,但是直接远程在服务器上用体验当然不如本地计算机好,那么如何远程访问呢? 首先需要在服务器上安装好ipython, ju ...
随机推荐
- poj-1151-Atlantis-线段树求面积并
非常裸的线段树求面积并. 坐标须要离散化一下. #include<stdio.h> #include<iostream> #include<stdlib.h> #i ...
- CG 内置函数 和 HLSL 内置函数
CG 内置函数 英伟达官网链接: http://http.developer.nvidia.com/Cg/index_stdlib.html absacosallanyasinatan2atanbi ...
- cpc,tank
先保存一段错误的代码 #include<iostream> #include<cstdio> #include<cstring> #include<algor ...
- 英语音乐---二、Burning
英语音乐---二.Burning 一.总结 一句话总结:Burning - Maria Arredondo 玛丽亚·亚瑞唐多(Maria Arredondo),1985年7月6日出生于文内斯拉小镇,挪 ...
- [HNOI2008] GT考试(DP+矩阵快速幂+KMP)
题目链接:https://www.luogu.org/problemnew/show/P3193#sub 题目描述 阿申准备报名参加 GT 考试,准考证号为 N 位数 X1,X2…Xn(0 <= ...
- 在shell脚本中使用代理
设置所有的代理走socks5 export ALL_PROXY="socks5://127.0.0.1:1080" 取消代理 unset ALL_PROXY
- Laravel-错误调试与记录日志
Laravel-错误调试与记录日志 标签(空格分隔): php 错误调试 配置 修改/config/app.php 'debug' => env('APP_DEBUG', true), 开启de ...
- Python开发注意事项
仅为记录自己在使用python过程的的一些心得! 1.服务器上运行脚本: windows服务器: 显式运行:在cmd中直接用python xxxx.py 运行一个py脚本文件. 后台运行:在cm ...
- mac终端(terminal)里的快捷键
Command + K 清屏 Command + T 新建标签 Command +W 关闭当前标签页 Command + S 保存终端输出 Command + D 垂直分隔当前标签页 Command ...
- Mac上vmware虚拟机Windows10安装JDK8及配置环境
1.jdk8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.双击下载的jdk进行安装 3.安装成功之 ...