數據科學和機器學習,Jupyter Notebook入門指南

2021-02-21 AI有道

編者按:對於機器學習和數據科學的入門者來說,「有什麼好用的IDE/環境/工具?」是他們提出的最常見的問題之一。這確實也是個不怎麼好回答的問題,因為它沒有具體選項——從面向特定語言的IDE(如R Studio、PyCharm)到Sublime Text、Atom等編輯器——它們都很優秀,所以如果你有選擇恐懼症,你最好讀讀論智的這篇文章,從Jupyter Notebook開始學起。

如果每個數據科學家都應該使用或必須使用一種工具,毫無疑問,它就是Jupyter Notebook(曾用名iPython Notebook)。Jupyter Notebook是一個交互式筆記本,它功能強大,支持40多種程式語言,可共享,並提供在同一環境中構建可視化應用的服務。

數據科學家可以在上面創建和共享自己的文檔,從實現代碼到全面報告,Jupyter Notebook大大簡化了開發者的工作流程,幫助他們實現更高的生產力和更簡單的多人協作。也正是因為如此,它一直以來都是數據科學家們最喜歡的工具之一。

本文將全面介紹筆記本的安裝、操作方法,並深入探討它的特性和優勢。當你讀完全文後,我們希望你能找到用Jupyter Notebook幫助自己實現機器學習項目的靈感,也能真正感受到,為什麼Jupyter Notebook會比其他工具更受歡迎!

1. 什麼是Jupyter Notebook?

2. 如何安裝Jupyter Notebook?

3. 入門

4. Jupyter Notebook的魔術命令

5. 不僅限於Python

6. Jupyter Notebook的交互式控制面板

7. 快捷鍵

8. 有用的擴展

9. 保存和共享你的筆記本

10. JupyterLab

11. 實踐和技巧

Jupyter Notebook是一個開源的Web應用程式,旨在方便開發者創建和共享代碼文檔。

它提供了一個環境,用戶可以在裡面寫代碼、運行代碼、查看結果,並在其中可視化數據。鑑於這些優點,Jupyter Notebook成了數據科學家眼裡的一款人見人愛的工具,它能幫助他們便捷地執行各種端到端任務,如數據清洗、統計建模、構建/訓練機器學習模型等。

而對於初學者,Jupyter Notebook也獨具魅力。它的一個特色是允許把代碼寫入獨立的cell中,然後單獨執行。這樣做意味著用戶可以在測試項目時單獨測試特定代碼塊,無需從頭開始執行代碼。雖然其他的IDE環境(如RStudio)也提供了這種功能,但就個人使用情況來看,Jupyter Notebook的單元結構是設計的最好的。

這個筆記本的優勢還體現在靈活性和交互性上。Jupyter Notebook支持的程式語言數量高達40餘種,除了最基礎的Python,它還允許用戶在上面運行R語言和SQL等語言。由於它比IDE平臺更具交互性,用戶也更樂於在各種教程中用它展示代碼。

Jupyter Notebook原來也叫iPython Notebook,顧名思義,它和Python關係緊密。如果要在PC上安裝筆記本,首先你要確保自己已經安裝了Python(2.7/3.3或更高),這是必備條件。

Anaconda

官方在文檔中強烈建議新用戶用Anaconda打包安裝Python和Anaconda——所謂懶人方法,小白必備。其實除了提到的兩個工具,Anaconda還包含數據科學和機器學習中經常需要用到的各種軟體包,只需下載、解壓、安裝,所有工具就都一步到位了。

下載地址:https://jupyter.readthedocs.io/en/latest/install.html

pip

如果你很欣賞自己,或者因為某些因素就是不想用Anaconda,你也可以用pip。當然首先,你得確保自己的機器上有pip的最新版本。

#Linux和OSX

pip install -U pip setuptools

#Windows

python -m pip install -U pip setuptools

然後,安裝Jupyter Notebook:

#Python2用戶看這裡

pip install jupyter

#Python3用戶不要跑

pip3 install jupyter

如果還是有疑問,請看官方文檔(英)、官方文檔翻譯(中)。

安裝完成後,如果要運行Jupyter Notebook,你只需在控制臺輸入以下命令:

jupyter notebook

你會看到筆記本打開了你的默認瀏覽器,網址為http:// localhost:8888/tree。

一般情況下,當你輸入命令行後,控制臺會出現一行「The Jupyter Notebook is running at……」,如果瀏覽器因為某些原因無法打開,你就需要複製這個URL,手動打開相應網址。

當筆記本打開後,它的頂部有Files、Running和Clusters三個選項。其中Files中列出了所有文件,Running顯示了你已經打開的終端和筆記本,Clusters則是IPython parallel提供的。

如果你想新建一個筆記本,單擊面板右側的「New」,它會跳出4個選項:

Python 3

Text File

Folder

Terminal

選擇Text File後,你會得到一個空白的頁面。它相當於一個文本編輯器(類似於Ubuntu上的應用程式),你可以在上面輸入任何字母、單詞和數字,所以選擇好程式語言後,你是可以在上面寫腳本的。此外,它還提供查找和替換文件中的單詞的功能。

選擇Folder後,你其實是在編輯文件夾列表。你可以創建一個新文件夾,把所需文檔放進裡面,或者修改它的名稱、直接把它刪除。

而Terminal的工作方式和Mac、Linux計算機上的Terminal一樣,都是在Web瀏覽器中創建終端支持。只需在終端輸入Python,一個Python腳本就寫好了。

由於本文重點介紹的是筆記本,下面我們會重點展示新建「Python 3」後的結果:

導入最常見的Python庫來啟動筆記本,如pandas和numpy。在代碼上方的菜單中,那些圖標依次表示添加、編輯、剪切、向上移動cell、向下移動cell、運行代碼、停止運行和撤銷。

這個下拉的列表提供了四個選項:

Code:這個不言自明,就是你寫代碼的地方;

Markdown:非常常見的輕量級標記語言,用來為代碼添加注釋和結論;

Raw NBConvert:一個命令行工具,可以把你的筆記本轉換成另一種格式,如HTML;

Heading:添加標題,使你的文檔看起來更乾淨整潔,它現在已經變成Markdown裡的一個語法,用兩個#表示。

作為iPython的繼承者,開發人員已經在Jupyter Notebook中加入預定義的魔術命令(magic function)。這是一種增加便捷性和互動性的工具,如果要查看命令列表,你可以輸入(註:通常不需要「%」):

%lsmagic

當看到那一串函數列表時,也許你能從中認出幾張老面孔,如%clear、%autosave、%debug和%mkdir。只要你以前寫過代碼,這些函數就幾乎是不可避免的。

在Jupyter Notebook中,魔術命令有兩種運行方式,一是Line-wise,而是Cell-wise。顧名思義,Line-wise就是當你想執行一個命令行的時候需要用到的,而Cell-wise面向的就不單單是一行了,它作用的是整個cell的代碼塊。

為了區分兩種運行方式,如果是Line-wise,所有命令必須以%字符打頭;如果是Cell-wise,則用%%。

Line-wise:

%time a = range(10)

Cell-wise:

%%timeit a = range (10)

min(a)

以上只是兩個最簡單的示例,你可以試著自己運行這些命令,看看其中有什麼區別。

之前也提到了,Jupyter Notebook的成功離不開它的靈活性,雖然Python在數據科學和機器學習中都佔局主導地位,但對於數據分析任務,其他語言也有各種各樣的特色和優勢,比如R語言的'ggplot2'軟體包就非常好用。在這一點上,Jupyter Notebook的態度是開放的。

如果想在Jupyter Notebook中啟用R,你需要先去GitHub上下載'IRKernel'(R的專用kernel),然後按以下8個步驟依次執行(附圖解地址):

步驟一:用Anaconda安裝Jupyter Notebook;

步驟二:完成下載後,打開Anaconda命令提示符;

步驟三:輸入ipython notebook新建ipython筆記本

步驟四:用conda update ipython-notebook這個命令行更新筆記本;

步驟五:輸入conda install -c r ipython-notebook r-irkernel安裝IRkernel;

步驟六:用R.exe打開R;

步驟七:輸入install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = 'http://irkernel.github.io/', type = 'source')安裝必要軟體包;

步驟八:輸入IRkernel::installspec()後再輸入quit(),完成操作。

如果是Julia用戶,你也可以在Jupyter Notebook中「暢所欲言」。考慮到篇幅因素,有需要的讀者請前往www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/查看圖文攻略。

和R語言一樣,JavaScript用戶也需要去Github先下載『IJavascript』 kernel:github.com/n-riesco/ijavascript。文檔裡已經明確寫出了安裝kernel所需的步驟,但要注意的是,記得先裝Node.js和npm,這是大前提!

6. Jupyter Notebook的交互式控制面板

在添加小部件前,你需要先導入小部件包:

from ipywidgets import widgets

小部件的基本類型是典型的基於輸入和按鈕的文本輸入。你可以參考下面這幅動圖,了解交互式小部件的外觀:

來源:Dominodatalab

既然Jupyter Notebook的主打優勢是便捷,那它自然少不了方便操作的快捷鍵。事實上,當你想運行任意代碼塊時,只需按下Ctrl + Enter就可以了。

下面是本文挑選的一些實用快捷鍵,有需要的讀者可以視情況逐個閱讀+嘗試,如果今後你會經常用到Jupyter Notebook,那不會這些組合鍵的你就幾乎已經是條鹹魚了。

Jupyter Notebook提供了兩種不同的鍵盤輸入模式——Command和Edit。其中Command模式是將鍵盤和計算機命令綁定在一起,這時單元框線是灰色的(左側藍色粗線)。Edit模式允許你將文本(或代碼)鍵入活動單元,這時單元框線是綠色的。

用Esc和Enter分別在Command和Edit模式之間跳轉。

更多快捷鍵介紹(中文):blog.csdn.net/lawme/article/details/51034543

添加擴展是提高Jupyter Notebook效率的一種非常有效的方式,那麼安裝和使用擴展哪家強?這裡我們推薦Nbextensions。

先是安裝(pip):

pip install jupyter_contrib_nbextensions

安裝關聯的JavaScript和CSS文件:

jupyter contrib nbextension install --user

完成此操作後,你會在Jupyter Notebook主頁頂部看到一個'Nbextensions'選項卡。

如果要啟用一個擴展,只需點擊來激活。下面是4個比較有用的擴展。

Printview:生成預覽,新增的按鈕叫jupyter nbconvert。

Scratchpad:生成一個實驗環境(副本)跑代碼,不會對筆記本代碼造成影響。

Table of Contents (2):抓取所有標題,並顯示在浮動窗口中。

此外,小編也曾經寫過一篇《Top 5:五大最實用的Jupyter Notebook擴展插件》,介紹了另外5種好用的擴展,有興趣的讀者可以一起看一看。

這是Jupyter Notebook中最重要和最棒的功能之一。有過寫博客經歷的讀者也許知道這種痛,當你一腔熱血想把自己的成果分享給別人時,可能代碼格式還沒轉完你就放棄了。大多數筆記本都採用json格式,它不是很適合共享,也不利於在博客中發布不同的單元塊。

但Jupyter Notebook不一樣,點擊進入「file」後,你會看到一個「Download as」:

看到這7個選項後你就很開心了,其中最常用的是.ipynb文件。你也可以用nbconvert選項手動將筆記本轉換為不同的格式,如HTML和PDF。

此外,你還可以使用jupyterhub,它允許你在其伺服器上託管筆記本並與多個用戶共享。許多頂尖的研究項目都把這作為協作方式。

JupyterLab是今年2月推出的一個工具,從某種程度上來說,它是Jupyter Notebook的一個發展——擁有同樣的組件,但允許更靈活和更強大的項目工作方式。換句話說,它的用戶體驗更好。

JupyterLab的特色是允許用戶在一個窗口內安排筆記本、終端、文本文件和輸出的工作區。你可以把窗口拖到你想要的位置,也可以通過實時預覽編輯常用文件格式,如Markdown、CSV和JSON,實時查看項目進展。

雖然自己鑽研很有趣,但無論是學習還是工作,大部分時候你是在一個團隊中工作的。在這種情況下,你要規範自己的操作和實踐,確保筆記本中的代碼和注釋都是正確的,方便其他人閱讀、理解。以下是一些實踐指標,僅供參考:

對每個程式設計師來說最重要的事:要好好注釋!

確保你保存了代碼文檔。

形成一套命名體系,並在實踐中落到實處,方便自己和他人理解。

在剛開始的時候導入所需的庫,並在旁邊注釋導入目的。

確保代碼行距合適,你也不想別人因為看不懂你的循環和函數瘋掉,對吧?

當代碼越來越多時,隱藏不重要代碼,確保乾淨整潔。

此外,當你需要把成果演示給別人看時(是的你又要做該死的PPT了),你是可以偷懶直接在Jupyter Notebook裡做演示的。

找到「View」,點開其中的「Cell Toolbar」,然後是「Slideshow」。每個代碼塊都在右側顯示一個名為「Slide Type」的下拉選項:

具體效果如何,請自己嘗試。

寫到這裡,本文也就已經差不多結束了,雖然在一篇文章內塞進這麼多內容可能會影響閱讀體驗,但我們還是真誠地希望新手能從中找到一些有用的東西。

相關焦點

  • 機器學習新手必看:Jupyter Notebook入門指南
    ,支持實時代碼、數學方程、可視化和 Markdown,其用途包括數據清理和轉換、數值模擬、統計建模、機器學習等等。目前,數據挖掘領域中最熱門的比賽 Kaggle 裡的資料都是 Jupyter 格式。對於機器學習新手來說,學會使用 Jupyter Notebook 非常重要。下面這篇 Jupyter Notebook 入門指南由 Pranav Dar 撰寫。
  • 快速入門 Jupyter notebook
    Jupyter notebook 是一個很強大的交互式和展示數據科學項目的工具,它可以作為一個開發文檔,包含代碼、解釋說明文字、代碼運行結果、數學公式等等,功能非常強大,也是現在非常流行的工具。創建你的第一個 Notebook這一部分將介紹如何運行和保存 notebooks,熟悉 Jupyter notebook 的結構和交互界面。這裡將通過一個例子來熟悉一些核心的用法,更好的了解 Jupyter notebook 的使用。
  • Jupyter Notebook的三大短板,都被這個新工具補齊了
    夏乙 發自 凹非寺量子位 出品 | 公眾號 QbitAI在機器學習和數據科學領域,Jupyter已經家喻戶曉。它把筆記、代碼、圖表、注釋融合在一個交互式的筆記本裡,還能添加各種擴展功能。可謂機器學習入門進階研究之神器。
  • 上手jupyter notebook神器
    一、簡介Jupyter Notebook是一個開源的 Web 應用,能夠讓你創建、分享包含可執行代碼、可視化結構和文字說明的文檔。Jupyter Notebook的應用非常廣泛,它可以用在數據清理與轉換、數字模擬、統計模型、數據可視化、機器學習等方面。Jupyter Notebook非常活躍於深度學習領域。在項目的實驗測試階段,它相比於用 py 文件來直接編程更方便。
  • Jupyter Notebook 使用小技巧
    Jupyter Notebook 是一種基於網絡的交互式工具,它是機器學習和數據科學經常使用的工具。它可以被用於快速測試,作為報告工具,甚至作為複雜的學習材料在在線課程中使用。數據科學愛好者 Shadab Hussain 分享了 Jupyter Notebook 使用的一些小技巧。
  • 一款容易上手jupyter notebook神器
    Jupyter Notebook的應用非常廣泛,它可以用在數據清理與轉換、數字模擬、統計模型、數據可視化、機器學習等方面。Jupyter Notebook非常活躍於深度學習領域。在項目的實驗測試階段,它相比於用 py 文件來直接編程更方便。在項目結束之後如果要寫項目報告,用 Jupyter 也比較合適。
  • Jupyter Notebook介紹、安裝及配置教程
    Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運行 40 多種程式語言。Jupyter Notebook 的本質是一個 Web 應用程式,便於創建和共享文學化程序文檔,支持實時代碼,數學方程,可視化和 markdown。用途包括:數據清理和轉換,數值模擬,統計建模,機器學習等等。二、組成部分1.
  • 一分鐘讀懂Jupyter Notebook入門手冊
    來源:計量經濟學服務中心Jupyter Notebook 的本質是一個 Web 應用程式,便於創建和共享文學化程序文檔
  • Python安裝Jupyter Notebook配置使用教程
    本來想數據分析和可視化的時候才介紹的,所以沒有加上。最近要截圖比較多,用Jupyter Notebook可以很好看到代碼和結果。Jupyter Notebook是什麼Jupyter Notebook是一個開源的web應用程式,一個交互式筆記本,支持運行 40 多種程式語言。它允許您創建和共享文檔,包含代碼,方程,可視化和敘事文本。
  • 安卓運行Jupyter Notebook操作指南,不用電腦也能做數據分析!
    除此之外,Python還在Web編程和科學計算方面處於領先地位(只是命名一些其他領域)。總之,Python無處不在。而在Python的使用過程中,最受歡迎的可謂是Jupyter notebook 了,因為它具有以下眾多優點:1 極其適合數據分析( 想像一下如下混亂的場景:你在終端中運行程序,可視化結果卻顯示在另一個窗口中
  • 使用Python和Jupyter Notebook進行數據分析
    一位友人說,「我用Python,Jupyter notebook和Python相應的庫(numpy, matplotlib,seaborn和pandas等)做數據分析工作,非常有效,也很便利」。懷揣著學習和進取的心態,我立刻在google上面檢索關鍵詞:python jupyter notebook data analysis,閱讀了一些與這個主題相關的系列文章,並且積極地進行實踐之,讓自己一來熟悉jupyter notebook這個工具,二來藉助這個工具實現更有效地做數據分析。
  • jupyter notebook在線平臺和教程
    jupyter logo很多同學都在了解學習python過程中,都聽過jupyter和jupyter notebook的大名,但默認的python安裝是不包含jupyter的,因此很多人還不了解jupyter是幹什麼用的
  • Jupyter Notebook 的 28 個技巧(下)
    執行 shell 命令從你的 notebook 中執行 shell 命令是很簡單的。你可以直接使用下面的命令去檢查當前文件夾中可用的數據集:!jupyter-notebook-latexMarkdown 在 notebook 中是很重要的一部分內容,所以不要忘記去使用它豐富的表現能力。19.
  • Jupyterlab:超強的下一代Jupyter Notebook
    即使沒有這些數據佐證,我們也非常清楚Jupyter Notebook在數據科學領域的普及程度。編寫代碼,檢查結果,獲得豐富輸出的可能性,是真正使 Jupyter Notebook 受歡迎的一些功能。但據說所有好事(必須)都會結束,我們最喜歡的Notebook也是如此。* _ JupyterLab 最終會取代經典的 Jupyter Notebook_ *但這畢竟是件好事。
  • Jupyter Notebook——也許你總在使用她,但也許你從未嘗試過去了解她?
    Jupyter Notebook在資料讀取與處理、數值模擬、統計建模和機器學習等領域發揮著重要作用,他的一些主要特點和優勢包括但不僅限於如下所示:顏值高!點擊這裡你可以查看jupyter notebook支持的所有語言分享便捷:可以使用電子郵件、Dropbox、GitHub和Jupyter Notebook Viewer與他人共享。
  • 五個給機器學習和數據科學入門者的學習建議
    towardsdatascience作者:Daniel Bourke機器之心編譯參與:韓放、一鳴都說做一件事情最好的時機就是「現在」,但是從何開始往往會難倒一大批人,更不用說是想要入門數據科學和機器學習的朋友了
  • 為jupyter notebook添加目錄(Jupyter安裝拓展nbextensions)
    ,應該都知道jupyter notebook吧,現在的我算是半個jupyter notebook的愛好者吧,主要是它可以與markdown結合,將前言信息、分析用的code、圖表、展現的結論等信息都可以即時記錄,不用多個文檔間切換記錄。
  • Jupyter可能並非理想的Notebook
    據報導,Jupyter notebook 是數據科學家首選的實戰工具。本文展示了從 EDA(探索性數據分析)到API 的快節奏,並沒有Jupyter。但是,很多機器學習開發者在生產中都經歷過把一個深度學習 notebook 重構成一個實際算法時深深的痛苦(reddit 和 Stack Overflow 上也有類似的討論)。保持精益生產的思想,我們應該努力減少浪費。
  • 大神教小白搭建Jupyter Notebook環境
    )和 R 三種科學運算語言的計算工具平臺,所以將其命名為 Ju-Py-te-R。發展到現在,Jupyter 已經成為一個幾乎支持所有語言,能夠把軟體代碼、計算輸出、解釋文檔、多媒體資源整合在一起的多功能科學運算平臺。在Pycham中只能運行一共py文件,而在Jupyter notebook可以運行一行代碼就可以了。
  • 入門 | 始於Jupyter Notebooks:一份全面的初學者實用指南
    Analytics Vidhya 的 Pranav Dar 近日發表了一篇上手使用 Jupyter Notebooks 的指南,從安裝到基本功能進行了簡潔清晰的介紹。引言應該使用哪個 IDE/環境/工具?這是人們在做數據科學項目時最常問的問題之一。