翻譯 | 張建軍javascript
出品 | 人工智能頭條(公衆號ID:AI_Thinker)html
【人工智能頭條導讀】Jupyter Notebook 是一個 Web 應用程序,便於建立和共享文學化程序文檔,支持實時代碼、數學方程、可視化和 Markdown,其用途包括數據清理和轉換、數值模擬、統計建模、機器學習等等。目前,數據挖掘領域中最熱門的比賽 Kaggle 裏的資料都是 Jupyter 格式。對於機器學習新手來講,學會使用 Jupyter Notebook 很是重要。java
下面這篇 Jupyter Notebook 入門指南由 Pranav Dar 撰寫。當你讀完這篇文章時,你將會了解,爲何你應該利用它來搭建你的機器學習項目,以及爲何 Jupyter Notebook 比這個領域的其餘標準工具更好!python
▌什麼是 Jupyter Notebook?git
Jupyter Notebook 是一款開放源代碼的 Web 應用程序,可以讓咱們建立並共享代碼和文檔。程序員
它提供了一個環境,你能夠在其中記錄代碼,運行代碼,查看結果,可視化數據並在查看輸出結果。這些特性使其成爲一款執行端到端數據科學工做流程的便捷工具 ,能夠用於數據清理,統計建模,構建和訓練機器學習模型,可視化數據以及許多其餘用途。github
當你還在構建項目原型時,Jupyter Notebooks 真的特別好用,由於你的代碼是被寫入獨立的單元中並被單獨執行的。這容許用戶測試項目中的特定代碼塊,而無需從腳本的開始執行代碼。許多其餘的 IDE 環境(Integrated Development Environment, 集成開發環境)(如 RStudio )也以其餘幾種方式作到這一點,但我發現 Jupyter 的單個單元結構是最好的。npm
正如你在本文中將會看到的,這些 Notebooks 是數據科學家手中很是靈活、可交互和強大的工具。他們甚至容許你運行除 Python 之外的其餘語言,好比 R 、SQL 等。因爲它們比 IDE 平臺更具交互性,所以它們被普遍地應用於教學場景。json
▌如何安裝 Jupyter Notebook?瀏覽器
首先你須要在機器上安裝 Python,Python 2.7或Python 3.3(或更高版本)均可以。
Anaconda
新用戶可使用 Anaconda 發行版來同時安裝 Python 和 Jupyter Notebooks。
Anaconda 安裝了這兩種工具,幷包含了數據科學和機器學習社區中經常使用的不少軟件包。你能夠從這裏下載最新版本的Anaconda 。
下載地址:https://jupyter.readthedocs.io/en/latest/install.html
pip 安裝方法
若是出於某種緣由,你決定不使用 Anaconda,那麼你須要確保你的機器正在運行最新版本的 pip。 怎麼作?若是你已經安裝了 Python,那麼 pip 已經安裝好了。要升級到最新的版本,請參照下面的代碼:
#Linux and OSX
pip install -U pip setuptools #Windows
python -m pip install -U pip setuptools
一旦 pip 安裝完畢,你能夠繼續安裝 Jupyter:
#For Python2
pip install jupyter #For Python3
pip3 install jupyter
你能夠在這裏(地址:https://jupyter.readthedocs.io/en/latest/install.html)查看官方的 Jupyter 安裝文檔。
▌開始!
如今咱們已經瞭解了 Notebooks 是什麼,以及如何在本身的機器上安裝和設置 Notebooks。是時候開始動動手了!
要運行 Jupyter Notebooks,只需輸入如下命令就可開始使用!
jupyter notebook
如圖:
執行上面命令以後, Jupyter Notebook 將在你的默認瀏覽器中打開,網址爲:http://localhost:8888/tree
在某些狀況下,它可能沒法自動打開。這種狀況下,你的終端或者命令提示符中將會生成一個帶有令牌密鑰( token key )的網址。要打開 Notebook,你須要將整個 URL(包括令牌密鑰)複製粘貼到瀏覽器中。
Notebook 打開後,你會在頂部看到三個選項卡:Files(文件),Running(運行)和 Clusters(集羣)。Files 基本上列出了全部的文件,Running 顯示你當前已經打開的終端和Notebooks,Clusters 由 IPython parallel 包提供,用於並行計算。
要打開一個新的 Jupyter Notebook,請單擊頁面右側的「New」選項卡。在這裏,你有四個選項可供選擇:
⦁ Python 3
⦁ Text File (文本文件)
⦁ Folder (文件夾)
⦁ Terminal (終端)
在 "Text File" 選項中,你會獲得一個空白的文檔。輸入你喜歡的任何字母,單詞和數字。它基本上是一個文本編輯器(相似於 Ubuntu 上的應用程序)。你也能夠選擇一種語言(支持很是多的語言),而後用該語言來寫一個腳本。你還能夠查找和替換文件中的單詞。
在 "Folder" 選項中, 顧名思義它的功能就是建立文件夾。你能夠建立一個新文件夾來放入文件,從新命名或者刪除它。
"Terminal" 的工做方式與你的 Mac 電腦或 Linux 電腦上的終端徹底相同(或者 Windows 上的 cmd )。它在你的Web瀏覽器中支持終端會話。在這個終端中輸入 python ,瞧!如今你已經能夠開始寫 python 腳本了。
但在本文中,咱們將重點介紹 Notebooks,所以咱們將從「New」選項中選擇 "Python 3" 選項。你會看到以下的截圖:
而後,你能夠導入最多見的 Python 庫——pandas 和 numpy——來開始你的項目。代碼上方的菜單欄提供了操做單元格的各類選項:insert (添加),edit (編輯),cut (剪切),move cell up/down (上下移動單元格),run cells(在單元格中運行代碼),interupt (中止代碼),save (保存工做),以及 restart (從新啓動內核)。
在下拉菜單中(如上所示),你有四個選項:
Code - 這是你輸入代碼的地方
Markdown - 這是你輸入文本的地方。你能夠在運行代碼後添加結論,添加註釋等。
Raw NBConvert - 這是一個命令行工具,可將你的筆記本轉換爲另外一種格式(如 HTML)
Heading - 你能夠將標題添加到單獨的小節並使你的 Notebook 看起來乾淨整潔。這個選項如今已經集成到 Markdown 選項中。添加一個「##」,以確保在你以後輸入的內容將被視爲標題
▌使用 Magic Functions
開發人員已經插入了預約義的 magic functions,使你的工做更方便和更具交互性。你能夠運行如下命令來查看這些函數的列表(注意:一般不須要輸入「%」,由於一般 Automagic 是默認打開的):
%lsmagic
你會看到許多選項,你甚至可能認識其中的 %clear, %autosave, %debug 和 %mkdir 等函數。magic command 有兩種運行方式:
逐行運行( Line-wise )
逐塊運行( Cell-wise )
顧名思義, Line-wise 是當你想要執行一個單行命令的時候使用,而 Cell-wise 是你想要執行的命令不只僅是一行,而是整個單元格中的整個代碼塊時使用。
在逐行運行模式中,全部給定的命令都必須以 % 字符開始,而在逐塊運行模式下,全部命令都必須以 %% 開頭。讓咱們看看下面的例子來更好的理解:
逐行模式:
%time a = range(10)
逐塊模式:
%%timeit a = range (10) min(a)
我建議你運行這些命令,看看其中的區別!
▌不只限於 Python - 在 Notebooks 中使用 R,Julia 和JavaScript
Notebooks 的魔術並不止於此。你甚至能夠在 Notebooks 中使用其餘語言,如 R,Julia,JavaScrip t等。我我的喜歡 R 中的 ggplot2 軟件包,所以使用 Notebooks 來進行探索性數據分析很是方便。
要在 Jupyter 中啓用 R,你須要 GitHub上提供的 IRKernel( R 的專用內核)。這裏有一份詳細的指南(地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),總共須要八個步驟,還有截圖來引導你一步一步進行操做。
若是你是 Julia 用戶,你也能夠在 Jupyter Notebooks 中使用它!查看這篇詳盡的文章(地址:地址:https://discuss.analyticsvidhya.com/t/how-to-run-r-on-jupyter-ipython-notebooks/5512),它重點介紹了 Julia 用戶如何學習數據科學,幷包括了一章節介紹如何在 Jupyter 環境中使用 Julia。
若是你更喜歡使用 JavaScript,我推薦使用 IJavascript 內核。查看這個 GitHub 庫(地址:https://github.com/n-riesco/ijavascript),它會引導你在不一樣操做系統上安裝此內核。 請注意,你須要先安裝 Node.js 和 npm 才能使用它。
▌Jupyter Notebooks 中的交互式命令板
在開始添加小插件(widget)以前,你須要導入 widgets 包:
from ipywidgets import widgets
小插件的基本類型是典型的文本輸入框和按鈕。請參閱如下來自Dominodatalab 的示例,瞭解一下交互式小插件是怎麼使用的:
你能夠在這裏(地址:https://blog.dominodatalab.com/interactive-dashboards-in-jupyter/)查看詳盡的開發指南。
▌鍵盤快捷鍵——節省時間並提升效率!
快捷鍵是 Jupyter Notebooks 最好用的功能之一。當你想運行任何代碼塊時,你只須要按下Ctrl + Enter 便可。Jupyter Notebooks 提供的鍵盤快捷鍵很是多,爲咱們節省了大量時間。
如下是咱們挑選的一些快捷鍵,你在開始使用 Notebooks 時會常常用到這些快捷鍵。我強烈建議你閱讀這些內容的時候一個一個地嘗試一下這些快捷鍵。
Jupyter Notebook 提供了兩種不一樣的鍵盤輸入模式 - 命令和編輯。命令模式將鍵盤與 Notebook 命令綁定,並由具備藍色左邊距的帶有灰色單元格邊框來表示。編輯模式容許你將文本(或代碼)輸入活動單元格,並以綠色單元格邊框表示。
使用 Esc 和 Enter 在命令和編輯模式之間跳轉。如今就試試吧!
一旦進入命令模式(即沒有活動單元格),就能夠嘗試如下快捷鍵:
A 鍵將在選中單元格上方插入新單元格,B 鍵將在選中單元格下方插入一個單元格
要刪除單元格,請連續按兩次 D 鍵
要撤消已刪除的單元格,請按 Z 鍵
Y 鍵將當前的選中單元格變成代碼單元格
按住 Shift + 向上或向下箭頭鍵能夠選擇多個單元格。在多選模式下,按 Shift + M 會合並選中的單元格
F 鍵會彈出 「查找和替換」 菜單
處於編輯模式時(在命令模式下按 Enter 鍵進入編輯模式),你會發現如下快捷鍵很是好用:
Ctrl + Home 轉到單元格的開頭
Ctrl + S 會保存你的工做
和上面提過的同樣,Ctrl + Enter 將運行你的整個單元格
Alt + Enter 不只會運行你的單元格,它還會在下方添加一個新的單元格
Ctrl + Shift + F 打開命令選項板
要查看整個鍵盤快捷鍵列表,請在命令模式下按 H 或轉到 Help 菜單欄下的 Keyboard shortcuts。請常常檢查這些內容,由於常常會有新的快捷鍵被加進來。
▌有用的 Jupyter Notebooks 擴展
擴展能夠有效提升你的 Jupyter Notebooks 的生產力。安裝和使用擴展的最佳工具之一是 Nbextensions。它須要兩個簡單的步驟來安裝(也有其餘方法,但我發現這是最方便的):
第1步:用 pip 來安裝它:
pip install jupyter_contrib_nbextensions
第2步:安裝關聯的 JavaScript 和 CSS 文件:
jupyter contrib nbextension install --user
完成此操做後,你會在 Jupyter Notebook 主頁頂部看到一個 Nbextensions 選項卡。這裏面有不少很是棒的擴展供你使用。
要啓用一個擴展,只需點擊它來激活。我在下面提到了4個我認爲最有用的擴展:
Code prettify:從新格式化和美化代碼塊的內容。
Printview:這個擴展添加了一個工具欄按鈕來調用當前 Notebook 的 jupyter nbconvert,並可選擇在新的瀏覽器標籤中顯示轉換後的文件。
Scratchpad:這個擴展增長一個便捷單元格,它可讓你運行你的代碼而沒必要修改你的 Notebook。這是一個很是方便的擴展,特別是當你想要測試你的代碼,但不想在你的活動Notebook上作這件事。
Table of Contents (2):這個擴展能夠收集你的 Notebook 中的全部標題,並將它們顯示在一個浮動窗口中。
這些只是你可使用的其中一些擴展。我強烈建議查看整個擴展列表並對它們進行測試。
▌保存和共享你的 Notebook
這是 Jupyter Notebook 中最重要和最棒的功能之一。當我須要寫博客文章,但個人代碼和註釋都保存在 Jupyter 文件中時,我須要先將它們轉換爲另外一種格式。請記住,這些 Notebooks 採用 json 格式,在共享它時這並非頗有幫助。我沒法在電子郵件或博客上發佈不一樣的單元格或代碼塊,對吧?
進入 Files 菜單,你會看到一個 Download As 選項:
你能夠將你的 Notebook 保存爲 7 個選項中的任何一個。最經常使用的是 .ipynb 文件,這樣其餘人就能夠在本身的機器上覆制代碼;或者保存爲 .html 文件, 這樣會打開一個網頁(當你想要保存嵌入在 Notebook 中的圖像時,這會派上用場)。
你也可使用 nbconvert 選項手動將你的 Notebook 轉換爲不一樣的格式,如 HTML 或 PDF。
你還可使用 jupyterhub,它容許你在其服務器上託管 Notebooks 並與多個用戶共享。許多頂尖的研究項目都使用這個功能用於協做。
▌JupyterLab
JupyterLab 於今年 2 月推出,它容許以更靈活和更強大的方式處理項目,但使用的是和 Jupyter Notebooks 相同的組件。JupyterLab 環境與 Jupyter Notebooks 徹底相同,但用戶會有更高效的體驗。
在 JupyterLab 中,你只需一個窗口便可安排 Notebook 的工做區域、終端、文本文件和輸出!你要作的僅僅是將單元格拖放到你想要的位置。你還能夠經過實時預覽功能來編輯經常使用文件格式,如 Markdown、CSV 和 JSON,以便在實際文件中實時查看所發生的變化。
若是你想在你的機器上試用它,你能夠在這裏查看安裝說明(地址:http://jupyterlab.readthedocs.io/en/stable/getting_started/installation.html)。 開發人員的目標是 JupyterLab 最終能夠取代 Jupyter Notebooks。可是,要作到這一點還要花點時間。
▌最佳實踐
雖然單獨工做可能頗有趣, 但大多數時候你會發現本身是在一個團隊中工做。在這種狀況下,遵循指導方針和最佳實踐很是重要,這樣能夠確保你的代碼和 Jupyter Notebooks 被正確標註,以便與你的團隊成員保持一致。下面我列出了一些最佳實踐指南,你在 Jupyter Notebooks 上工做時必定要遵循如下指南:
對於任何程序員來講最重要的事情之一:始終確保爲代碼添加合適的註釋!
確保你有代碼所需的文檔。
考慮一個命名方案,並堅持在全部代碼中使用以確保一致性。這樣其餘人更容易讀懂你的代碼。
不管你須要什麼庫,在 Notebooks 開始時導入它們(並在它們旁邊添加註釋,說明導入它們的目的)。
確保代碼中行與行之間有適當間隔,不要把循環和函數放在同一行中。
有時候你會發現你的文件變得很是繁重。看看有沒有方法隱藏你認爲對於之後參考不過重要的代碼。 Notebooks 看起來整潔乾淨, 讓人賞心悅目也很是重要。
Matplotlib 能夠很漂亮整潔地展現你的 Notebook,看看怎麼使用它!
地址:http://nbviewer.jupyter.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-4-Matplotlib.ipynb
另外一個提示! 當你想建立演示文稿時,首先想到的工具是 PowerPoint 和 Google Slides。其實你的 Jupyter Notebooks 也能夠建立幻燈片!還記得我說它超級靈活嗎? 我一點都沒有誇大。
要將你的 Notebooks 轉換爲幻燈片,請轉到 View -> Cell Toolbar,而後單擊 Slideshow。看!如今,每一個代碼塊都在右側顯示一個 Slide Type 的下拉選項。它提供瞭如下 5 個選項:
好好試一試每個選項以更好地理解它,它會改變你呈現你的代碼的方式!
▌結語
請注意,這篇文章並無詳盡列出 Jupyter Notebooks 提供的全部功能。還有更多的功能等着你在使用中挖掘。和其餘不少事情同樣,關鍵在於實踐。
最後分享一個 GitHub 庫(地址:https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks),裏面有不少有用的內容。