Jupyter Notebook 是一个开源的 Web 应用程序,能够用来建立和共享包含动态代码、方程式、可视化及解释性文本的文档。其应用于包括:数据整理与转换,数值模拟,统计建模,机器学习等等。更多信息请见官网 。html
CentOS 7.2 中默认集成了 Python 2.7,能够经过下面命令检查 Python 版本:
python --version
python
安装 pip
pip 是一个 Python 包管理工具,咱们使用 yum 命令来安装该工具:
yum -y install python-pip
使用下面命令升级 pip 到最新版本:
pip install --upgrade pip
浏览器
安装相关依赖
安装 Jupyter 过程当中还须要其余一些依赖,咱们使用如下命令安装他们:
yum -y groupinstall "Development Tools"
yum -y install python-devel
服务器
安装 virtualenv
咱们将为 Jupyter 建立一个独立的虚拟环境,与系统自带的 Python 隔离开来。为此,先安装 virtualenv 库:
pip install virtualenv
网络
建立虚拟环境
建立一个专门的虚拟环境,并直接激活进入该环境:
virtualenv venv
source venv/bin/activate
架构
使用 pip 安装 Jupyter
pip install jupyter
dom
创建项目目录
咱们先为 Jupyter 相关文件准备一个目录:
mkdir /data/jupyter
cd /data/jupyter
再创建一个目录做为 Jupyter 运行的根目录:
mkdir /data/jupyter/root
机器学习
准备密码密文
因为咱们将以须要密码验证的模式启动 Jupyter,因此咱们要预先生成所需的密码对应的密文。
2.1. 生成密文
使用下面的命令,建立一个密文的密码:
python -c "import IPython;print IPython.lib.passwd()"
执行后须要输入并确认密码,而后程序会返回一个'sha1:...'的密文,咱们接下来将会用到它。ide
修改配置
3.1. 生成配置文件
咱们使用 --generate-config 来参数生成默认配置文件:
jupyter notebook --generate-config --allow-root
生成的配置文件在 /root/.jupyter/ 目录下,能够点此编辑配置。
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 端口。svg
直接启动
使用如下指令启动 Jupyter Notebook:
jupyter notebook
此时,访问 http:// <您的 cvm ip 地址> :8888 便可进入 Jupyter 首页。
建立 Notebook
进入【首页】首先须要输入前面步骤中设置的密码。
而后点击右侧的【 new 】,选择 Python2 新建一个 notebook,这时跳转至编辑界面。
如今咱们能够看到 /data/jupyter/root/ 目录中出现了一个 Untitled.ipynb 文件,这就是咱们刚刚新建的 Notebook 文件。咱们创建的全部 Notebook 都将默认以该类型的文件格式保存。
后台运行
直接以 jupyter notebook 命令启动 Jupyter 的方式在链接断开时将会中断,因此咱们须要让 Jupyter 服务在后台常驻。
先按下 Ctrl + C 并输入 y 中止 Jupyter 服务,而后执行如下命令:
nohup jupyter notebook > /data/jupyter/jupyter.log 2>&1 &
该命令将使得 Jupyter 在后台运行,并将日志写在 /data/jupyter/jupyter.log 文件中。
准备后续步骤的 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
Code Cell
新建的 notebook 中包含一个代码 Cell(Code Cell),以[ ]
开头,在该类型的 Cell 中,能够输入任意代码并执行。如输入:
1 + 1
而后按下 Shift + Enter 键, Cell 中代码就会被执行,光标也会移动至下个新 Cell 中。咱们接着输入:
print('Hello Jupyter')
再次按下 Shift + Enter ,能够看到此次没有出现 Out[..]
这样的文字。这是由于咱们只打印出来了某些值,而没有返回任何的值。
按下 Ctrl + S 保存,等待步骤检查器确认。
Heading Cell
新版本中已经没有独立的 Heading Cell,如今标题被整合在 Markdown Cell 之中。
若是咱们想在顶部添加一个的标题。选中第一个 Cell,而后点击 Insert -> Insert Cell Above。
你会发现,文档顶部立刻就出现了一个新的 Cell。点击在工具栏中 Cell 类型(默认为 Code),将其变成 Markdown。接着在 Cell 中写下:
# My First Notebook
而后按下 Shift + Enter 键,即可以看到生成了一行一级标题。
与 Markdown 语法相同,使用多个#将改变标题级别。
Markdown Cell
上一步中咱们已经尝试了使用了 Markdown Cell。在该 Cell 中,除标题外其余语法一样支持。好比,咱们在一个新的 Cell 中插入如下文本:
This is a **table**: | Name | Value | |:----:|:-----:| | A | 1 | | B | 2 | | C | 3 |
而后按下 Shift + Enter,便可渲染出相应内容。
<img src="http://jupyter.org/assets/nav_logo.svg" style="border: 2px solid black; float:left" />
高级用法 - LaTex
Markdown Cell 还支持 LaTex 语法。在 Cell 中插入如下文本:
$$int_0^{+infty} x^2 dx$$
一样按下 Shift + Enter,便可渲染出公式。
导出
notebook 支持导出导出为 HTML、Markdown、PDF 等多种格式。
如点击 File -> Download as -> HTML(.html),便可下载到 HTML 版本的 notebook。
yum -y install pandoc texlive-*
Matplotlib 是 Python 中最经常使用的可视化工具之一,能够很是方便地建立许多类型的 2D 图表和基本的 3D 图表。
pip install matplotlib
%matplotlib inline
关于 Matplotlib 的使用请移步其官网。
在接下来 Cell 中,咱们插入几个官方示例测试:
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,便可看到绘制出的图像。
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,便可看到绘制出的图像。
动手试试:最后,咱们来尝试绘制一个二次函数图像,你能够自行实现,也能够参考下面代码:
示例代码:/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()
TensorFlow™ 是一个采用数据流图,用于数值计算的开源软件库。它灵活的架构让你能够在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。
TensorFlow 最初由 Google 大脑小组的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可普遍用于其余计算领域。
安装 TensorFlow
咱们使用 pip 安装相关依赖及 Tensorflow
pip install protobuf
pip install tensorflow
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 的使用。