1. 程式人生 > >機器學習新手必看:Jupyter Notebook入門指南

機器學習新手必看:Jupyter Notebook入門指南


翻譯 | 張建軍

出品 | 人工智慧頭條(公眾號ID:AI_Thinker)

【人工智慧頭條導讀】Jupyter Notebook 是一個 Web 應用程式,便於建立和共享文學化程式文件,支援實時程式碼、數學方程、視覺化和 Markdown,其用途包括資料清理和轉換、數值模擬、統計建模、機器學習等等。目前,資料探勘領域中最熱門的比賽 Kaggle 裡的資料都是 Jupyter 格式。對於機器學習新手來說,學會使用 Jupyter Notebook 非常重要。

下面這篇 Jupyter Notebook 入門指南由 Pranav Dar 撰寫。當你讀完這篇文章時,你將會了解,為什麼你應該利用它來搭建你的機器學習專案,以及為什麼 Jupyter Notebook 比這個領域的其他標準工具更好!

什麼是 Jupyter Notebook?

Jupyter Notebook 是一款開放原始碼的 Web 應用程式,可讓我們建立並共享程式碼和文件。

它提供了一個環境,你可以在其中記錄程式碼,執行程式碼,檢視結果,視覺化資料並在檢視輸出結果。這些特性使其成為一款執行端到端資料科學工作流程的便捷工具 ,可以用於資料清理,統計建模,構建和訓練機器學習模型,視覺化資料以及許多其他用途。

當你還在構建專案原型時,Jupyter Notebooks 真的特別好用,因為你的程式碼是被寫入獨立的單元中並被單獨執行的。這允許使用者測試專案中的特定程式碼塊,而無需從指令碼的開始執行程式碼。許多其他的 IDE 環境(Integrated Development Environment, 整合開發環境)(如 RStudio )也以其他幾種方式做到這一點,但我發現 Jupyter 的單個單元結構是最好的。

正如你在本文中將會看到的,這些 Notebooks 是資料科學家手中非常靈活、可互動和強大的工具。他們甚至允許你執行除 Python 以外的其他語言,比如 R 、SQL 等。由於它們比 IDE 平臺更具互動性,因此它們被廣泛地應用於教學場景。

如何安裝 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 OSXpip install -U pip setuptools#Windowspython -m pip install -U pip setuptools

一旦 pip 安裝完畢,你可以繼續安裝 Jupyter:

#For Python2
pip install jupyter
#For Python3
pip3 install 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),裡面有很多有用的內容。

本文由人工智慧頭條編譯,轉載請聯絡小助手(微信1092722531),備註:轉載

公開課預告

課程主題:雲從科技:詳解跨鏡追蹤(Reid)技術實現及應用場景

時間:6月7日 20:00-21:00

分享嘉賓:袁餘鋒

雲從科技資深演算法研究員,2012年浙江大學碩士畢業,專注於計算機視覺的前沿演算法研究及應用落地,由其領導的技術團隊最近在Reid研究課題上取得重大突破,重新整理了三個資料集的世界紀錄。

掃描下方二維碼,新增小助手微信,備註:公開課,加入課程交流群,課程回放以及分享PPT會發到群裡