玩轉 Jupyter Notebook (CentOS)

Jupyter Notebook 簡介

Jupyter Notebook 是一個開源的 Web 應用程序,能夠用來建立和共享包含動態代碼、方程式、可視化及解釋性文本的文檔。其應用於包括:數據整理與轉換,數值模擬,統計建模,機器學習等等。更多信息請見官網html

A. 檢查 Python 環境

  1. CentOS 7.2 中默認集成了 Python 2.7,能夠經過下面命令檢查 Python 版本:
    python --versionpython

  2. 安裝 pip
    pip 是一個 Python 包管理工具,咱們使用 yum 命令來安裝該工具:
    yum -y install python-pip
    使用下面命令升級 pip 到最新版本:
    pip install --upgrade pip瀏覽器

  3. 安裝相關依賴
    安裝 Jupyter 過程當中還須要其餘一些依賴,咱們使用如下命令安裝他們:
    yum -y groupinstall "Development Tools"
    yum -y install python-devel服務器

B. 配置虛擬環境

  1. 安裝 virtualenv
    咱們將爲 Jupyter 建立一個獨立的虛擬環境,與系統自帶的 Python 隔離開來。爲此,先安裝 virtualenv 庫:
    pip install virtualenv網絡

  2. 建立虛擬環境
    建立一個專門的虛擬環境,並直接激活進入該環境:
    virtualenv venv
    source venv/bin/activate架構

  3. 使用 pip 安裝 Jupyter
    pip install jupyterdom

C. 配置 Jupyter Notebook

  1. 創建項目目錄
    咱們先爲 Jupyter 相關文件準備一個目錄:
    mkdir /data/jupyter
    cd /data/jupyter
    再創建一個目錄做爲 Jupyter 運行的根目錄:
    mkdir /data/jupyter/root機器學習

  2. 準備密碼密文
    因爲咱們將以須要密碼驗證的模式啓動 Jupyter,因此咱們要預先生成所需的密碼對應的密文。
    2.1. 生成密文
    使用下面的命令,建立一個密文的密碼:
    python -c "import IPython;print IPython.lib.passwd()"
    執行後須要輸入並確認密碼,而後程序會返回一個'sha1:...'的密文,咱們接下來將會用到它。ide

  3. 修改配置
    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

D. 啓動 Jupyter Notebook

  1. 直接啓動
    使用如下指令啓動 Jupyter Notebook:
    jupyter notebook
    此時,訪問 http:// <您的 cvm ip 地址> :8888 便可進入 Jupyter 首頁。

  2. 建立 Notebook
    進入【首頁】首先須要輸入前面步驟中設置的密碼。
    而後點擊右側的【 new 】,選擇 Python2 新建一個 notebook,這時跳轉至編輯界面。
    如今咱們能夠看到 /data/jupyter/root/ 目錄中出現了一個 Untitled.ipynb 文件,這就是咱們剛剛新建的 Notebook 文件。咱們創建的全部 Notebook 都將默認以該類型的文件格式保存。
    後臺運行

  3. 直接以 jupyter notebook 命令啓動 Jupyter 的方式在鏈接斷開時將會中斷,因此咱們須要讓 Jupyter 服務在後臺常駐。
    先按下 Ctrl + C 並輸入 y 中止 Jupyter 服務,而後執行如下命令:
    nohup jupyter notebook > /data/jupyter/jupyter.log 2>&1 &
    該命令將使得 Jupyter 在後臺運行,並將日誌寫在 /data/jupyter/jupyter.log 文件中。

  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

E. 使用 Jupyter Notebook

  1. 打開 first.ipynb 編輯界面
    接下來的步驟中如遇到步驟檢查未經過,請按下 Ctrl + S 保存,等待步驟檢查器確認。
    編輯界面
    • Jupyter Notebook 的編輯界面主要由 工具欄 和 內容編輯區 構成。
    • 下方編輯區,由 Cell 組成。每一個 notebook 由多個 Cell 構成,每一個 Cell 均可以有不一樣的用途。
  2. Code Cell
    新建的 notebook 中包含一個代碼 Cell(Code Cell),以[ ]開頭,在該類型的 Cell 中,能夠輸入任意代碼並執行。如輸入:
    1 + 1
    而後按下 Shift + Enter 鍵, Cell 中代碼就會被執行,光標也會移動至下個新 Cell 中。咱們接着輸入:
    print('Hello Jupyter')
    再次按下 Shift + Enter ,能夠看到此次沒有出現 Out[..] 這樣的文字。這是由於咱們只打印出來了某些值,而沒有返回任何的值。
    按下 Ctrl + S 保存,等待步驟檢查器確認。

  3. Heading Cell
    新版本中已經沒有獨立的 Heading Cell,如今標題被整合在 Markdown Cell 之中。
    若是咱們想在頂部添加一個的標題。選中第一個 Cell,而後點擊 Insert -> Insert Cell Above。
    你會發現,文檔頂部立刻就出現了一個新的 Cell。點擊在工具欄中 Cell 類型(默認爲 Code),將其變成 Markdown。接着在 Cell 中寫下:
    # My First Notebook
    而後按下 Shift + Enter 鍵,即可以看到生成了一行一級標題。
    與 Markdown 語法相同,使用多個#將改變標題級別。

  4. Markdown Cell
    上一步中咱們已經嘗試了使用了 Markdown Cell。在該 Cell 中,除標題外其餘語法一樣支持。好比,咱們在一個新的 Cell 中插入如下文本:
    This is a **table**: | Name | Value | |:----:|:-----:| | A | 1 | | B | 2 | | C | 3 |
    而後按下 Shift + Enter,便可渲染出相應內容。

  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,便可渲染出圖片。
  6. 高級用法 - LaTex
    Markdown Cell 還支持 LaTex 語法。在 Cell 中插入如下文本:
    $$int_0^{+infty} x^2 dx$$
    一樣按下 Shift + Enter,便可渲染出公式。

  7. 導出
    notebook 支持導出導出爲 HTML、Markdown、PDF 等多種格式。
    如點擊 File -> Download as -> HTML(.html),便可下載到 HTML 版本的 notebook。

  8. 導出 PDF
    其中,導出 PDF 須要其餘包的支持,咱們須要使用如下命令安裝這些依賴:
    yum -y install pandoc texlive-*
    • 注:直接導出 PDF 時 Jupyter 可能會忽略一些 Cell,建議先導出爲 HTML,而後使用瀏覽器將其轉爲 PDF。

F. 集成 Matplotlib(可選)

Matplotlib 是 Python 中最經常使用的可視化工具之一,能夠很是方便地建立許多類型的 2D 圖表和基本的 3D 圖表。

  1. 安裝 Matplotlib
    咱們使用 pip 來安裝 Matplotlib:
    pip install matplotlib
  2. 測試 Matplotlib
    咱們使用另外一個 notebook (matplotlib.ipynb)來測試 Matplotlib。
    點擊這裏打開 matplotlib.ipynb 編輯界面。
    • 魔法命令
      在第一個 Cell 中,咱們插入並執行:
      %matplotlib inline
      這是指定 matplotlib 圖表的顯示方式的魔法命令。inline 表示將圖表嵌入到 notebook 中。

G. 測試

關於 Matplotlib 的使用請移步其官網。
在接下來 Cell 中,咱們插入幾個官方示例測試:

  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,便可看到繪製出的圖像。

  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,便可看到繪製出的圖像。

  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()

H. 搭配 TensorFlow(可選)

TensorFlow™ 是一個採用數據流圖,用於數值計算的開源軟件庫。它靈活的架構讓你能夠在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。
TensorFlow 最初由 Google 大腦小組的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可普遍用於其餘計算領域。

  1. 安裝 TensorFlow
    咱們使用 pip 安裝相關依賴及 Tensorflow
    pip install protobuf
    pip install tensorflow

  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 的使用。

相關文章
相關標籤/搜索