對(duì)于機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的入門(mén)者來(lái)說(shuō),“有什么好用的IDE/環(huán)境/工具?”是他們提出的最常見(jiàn)的問(wèn)題之一。這確實(shí)也是個(gè)不怎么好回答的問(wèn)題,因?yàn)樗鼪](méi)有具體選項(xiàng)——從面向特定語(yǔ)言的IDE(如R Studio、PyCharm)到Sublime Text、Atom等編輯器——它們都很優(yōu)秀,所以如果你有選擇恐懼癥,你最好讀讀論智的這篇文章,從Jupyter Notebook開(kāi)始學(xué)起。
如果每個(gè)數(shù)據(jù)科學(xué)家都應(yīng)該使用或必須使用一種工具,毫無(wú)疑問(wèn),它就是Jupyter Notebook(曾用名iPython Notebook)。Jupyter Notebook是一個(gè)交互式筆記本,它功能強(qiáng)大,支持40多種編程語(yǔ)言,可共享,并提供在同一環(huán)境中構(gòu)建可視化應(yīng)用的服務(wù)。
數(shù)據(jù)科學(xué)家可以在上面創(chuàng)建和共享自己的文檔,從實(shí)現(xiàn)代碼到全面報(bào)告,Jupyter Notebook大大簡(jiǎn)化了開(kāi)發(fā)者的工作流程,幫助他們實(shí)現(xiàn)更高的生產(chǎn)力和更簡(jiǎn)單的多人協(xié)作。也正是因?yàn)槿绱耍恢币詠?lái)都是數(shù)據(jù)科學(xué)家們最喜歡的工具之一。
本文將全面介紹筆記本的安裝、操作方法,并深入探討它的特性和優(yōu)勢(shì)。當(dāng)你讀完全文后,我們希望你能找到用Jupyter Notebook幫助自己實(shí)現(xiàn)機(jī)器學(xué)習(xí)項(xiàng)目的靈感。
1. 什么是Jupyter Notebook?
Jupyter Notebook是一個(gè)開(kāi)源的Web應(yīng)用程序,旨在方便開(kāi)發(fā)者創(chuàng)建和共享代碼文檔。
它提供了一個(gè)環(huán)境,用戶可以在里面寫(xiě)代碼、運(yùn)行代碼、查看結(jié)果,并在其中可視化數(shù)據(jù)。鑒于這些優(yōu)點(diǎn),Jupyter Notebook成了數(shù)據(jù)科學(xué)家眼里的一款人見(jiàn)人愛(ài)的工具,它能幫助他們便捷地執(zhí)行各種端到端任務(wù),如數(shù)據(jù)清洗、統(tǒng)計(jì)建模、構(gòu)建/訓(xùn)練機(jī)器學(xué)習(xí)模型等。
而對(duì)于初學(xué)者,Jupyter Notebook也獨(dú)具魅力。它的一個(gè)特色是允許把代碼寫(xiě)入獨(dú)立的cell中,然后單獨(dú)執(zhí)行。這樣做意味著用戶可以在測(cè)試項(xiàng)目時(shí)單獨(dú)測(cè)試特定代碼塊,無(wú)需從頭開(kāi)始執(zhí)行代碼。雖然其他的IDE環(huán)境(如RStudio)也提供了這種功能,但就個(gè)人使用情況來(lái)看,Jupyter Notebook的單元結(jié)構(gòu)是設(shè)計(jì)的最好的。
這個(gè)筆記本的優(yōu)勢(shì)還體現(xiàn)在靈活性和交互性上。Jupyter Notebook支持的編程語(yǔ)言數(shù)量高達(dá)40余種,除了最基礎(chǔ)的Python,它還允許用戶在上面運(yùn)行R語(yǔ)言和SQL等語(yǔ)言。由于它比IDE平臺(tái)更具交互性,用戶也更樂(lè)于在各種教程中用它展示代碼。
2. 如何安裝Jupyter Notebook?
Jupyter Notebook原來(lái)也叫iPython Notebook,顧名思義,它和Python關(guān)系緊密。如果要在PC上安裝筆記本,首先你要確保自己已經(jīng)安裝了Python(2.7/3.3或更高),這是必備條件。
Anaconda
官方在文檔中強(qiáng)烈建議新用戶用Anaconda打包安裝Python和Anaconda——所謂懶人方法,小白必備。其實(shí)除了提到的兩個(gè)工具,Anaconda還包含數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中經(jīng)常需要用到的各種軟件包,只需下載、解壓、安裝,所有工具就都一步到位了。
下載地址:https://jupyter.readthedocs.io/en/latest/install.html
pip
如果你很欣賞自己,或者因?yàn)槟承┮蛩鼐褪遣幌胗肁naconda,你也可以用pip。當(dāng)然首先,你得確保自己的機(jī)器上有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
如果還是有疑問(wèn),請(qǐng)看官方文檔(英)、官方文檔翻譯(中)。
3. 入門(mén)
安裝完成后,如果要運(yùn)行Jupyter Notebook,你只需在控制臺(tái)輸入以下命令:
jupyter notebook
你會(huì)看到筆記本打開(kāi)了你的默認(rèn)瀏覽器,網(wǎng)址為http:// localhost:8888/tree。
一般情況下,當(dāng)你輸入命令行后,控制臺(tái)會(huì)出現(xiàn)一行“The Jupyter Notebook is running at……”,如果瀏覽器因?yàn)槟承┰驘o(wú)法打開(kāi),你就需要復(fù)制這個(gè)URL,手動(dòng)打開(kāi)相應(yīng)網(wǎng)址。
當(dāng)筆記本打開(kāi)后,它的頂部有Files、Running和Clusters三個(gè)選項(xiàng)。其中Files中列出了所有文件,Running顯示了你已經(jīng)打開(kāi)的終端和筆記本,Clusters則是IPython parallel提供的。
如果你想新建一個(gè)筆記本,單擊面板右側(cè)的“New”,它會(huì)跳出4個(gè)選項(xiàng):
Python 3
Text File
Folder
Terminal
選擇Text File后,你會(huì)得到一個(gè)空白的頁(yè)面。它相當(dāng)于一個(gè)文本編輯器(類似于Ubuntu上的應(yīng)用程序),你可以在上面輸入任何字母、單詞和數(shù)字,所以選擇好編程語(yǔ)言后,你是可以在上面寫(xiě)腳本的。此外,它還提供查找和替換文件中的單詞的功能。
選擇Folder后,你其實(shí)是在編輯文件夾列表。你可以創(chuàng)建一個(gè)新文件夾,把所需文檔放進(jìn)里面,或者修改它的名稱、直接把它刪除。
而Terminal的工作方式和Mac、Linux計(jì)算機(jī)上的Terminal一樣,都是在Web瀏覽器中創(chuàng)建終端支持。只需在終端輸入Python,一個(gè)Python腳本就寫(xiě)好了。
由于本文重點(diǎn)介紹的是筆記本,下面我們會(huì)重點(diǎn)展示新建“Python 3”后的結(jié)果:
導(dǎo)入最常見(jiàn)的Python庫(kù)來(lái)啟動(dòng)筆記本,如pandas和numpy。在代碼上方的菜單中,那些圖標(biāo)依次表示添加、編輯、剪切、向上移動(dòng)cell、向下移動(dòng)cell、運(yùn)行代碼、停止運(yùn)行和撤銷。
這個(gè)下拉的列表提供了四個(gè)選項(xiàng):
Code:這個(gè)不言自明,就是你寫(xiě)代碼的地方;
Markdown:非常常見(jiàn)的輕量級(jí)標(biāo)記語(yǔ)言,用來(lái)為代碼添加注釋和結(jié)論;
Raw NBConvert:一個(gè)命令行工具,可以把你的筆記本轉(zhuǎn)換成另一種格式,如HTML;
Heading:添加標(biāo)題,使你的文檔看起來(lái)更干凈整潔,它現(xiàn)在已經(jīng)變成Markdown里的一個(gè)語(yǔ)法,用兩個(gè)#表示。
4. Jupyter Notebook的魔術(shù)命令
作為iPython的繼承者,開(kāi)發(fā)人員已經(jīng)在Jupyter Notebook中加入預(yù)定義的魔術(shù)命令(magic function)。這是一種增加便捷性和互動(dòng)性的工具,如果要查看命令列表,你可以輸入(注:通常不需要“%”):
%lsmagic
當(dāng)看到那一串函數(shù)列表時(shí),也許你能從中認(rèn)出幾張老面孔,如%clear、%autosave、%debug和%mkdir。只要你以前寫(xiě)過(guò)代碼,這些函數(shù)就幾乎是不可避免的。
在Jupyter Notebook中,魔術(shù)命令有兩種運(yùn)行方式,一是Line-wise,而是Cell-wise。顧名思義,Line-wise就是當(dāng)你想執(zhí)行一個(gè)命令行的時(shí)候需要用到的,而Cell-wise面向的就不單單是一行了,它作用的是整個(gè)cell的代碼塊。
為了區(qū)分兩種運(yùn)行方式,如果是Line-wise,所有命令必須以%字符打頭;如果是Cell-wise,則用%%。
Line-wise:
%time a = range(10)
Cell-wise:
%%timeit a = range (10)
min(a)
以上只是兩個(gè)最簡(jiǎn)單的示例,你可以試著自己運(yùn)行這些命令,看看其中有什么區(qū)別。
5. 不僅限于Python
之前也提到了,Jupyter Notebook的成功離不開(kāi)它的靈活性,雖然Python在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)中都占局主導(dǎo)地位,但對(duì)于數(shù)據(jù)分析任務(wù),其他語(yǔ)言也有各種各樣的特色和優(yōu)勢(shì),比如R語(yǔ)言的'ggplot2'軟件包就非常好用。在這一點(diǎn)上,Jupyter Notebook的態(tài)度是開(kāi)放的。
如果想在Jupyter Notebook中啟用R,你需要先去GitHub上下載'IRKernel'(R的專用kernel),然后按以下8個(gè)步驟依次執(zhí)行(附圖解地址):
步驟一:用Anaconda安裝Jupyter Notebook;
步驟二:完成下載后,打開(kāi)Anaconda命令提示符;
步驟三:輸入ipython notebook新建ipython筆記本
步驟四:用conda update ipython-notebook這個(gè)命令行更新筆記本;
步驟五:輸入conda install -c r ipython-notebook r-irkernel安裝IRkernel;
步驟六:用R.exe打開(kāi)R;
步驟七:輸入install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = 'http://irkernel.github.io/', type = 'source')安裝必要軟件包;
步驟八:輸入IRkernel::installspec()后再輸入quit(),完成操作。
如果是Julia用戶,你也可以在Jupyter Notebook中“暢所欲言”??紤]到篇幅因素,有需要的讀者請(qǐng)前往www.analyticsvidhya.com/blog/2017/10/comprehensive-tutorial-learn-data-science-julia-from-scratch/查看圖文攻略。
和R語(yǔ)言一樣,JavaScript用戶也需要去Github先下載‘IJavascript’ kernel:github.com/n-riesco/ijavascript。文檔里已經(jīng)明確寫(xiě)出了安裝kernel所需的步驟,但要注意的是,記得先裝Node.js和npm,這是大前提!
6. Jupyter Notebook的交互式控制面板
在添加小部件前,你需要先導(dǎo)入小部件包:
from ipywidgets import widgets
小部件的基本類型是典型的基于輸入和按鈕的文本輸入。你可以參考下面這幅動(dòng)圖,了解交互式小部件的外觀:
來(lái)源:Dominodatalab
7. 快捷鍵
既然Jupyter Notebook的主打優(yōu)勢(shì)是便捷,那它自然少不了方便操作的快捷鍵。事實(shí)上,當(dāng)你想運(yùn)行任意代碼塊時(shí),只需按下Ctrl + Enter就可以了。
下面是本文挑選的一些實(shí)用快捷鍵,有需要的讀者可以視情況逐個(gè)閱讀+嘗試,如果今后你會(huì)經(jīng)常用到Jupyter Notebook,那不會(huì)這些組合鍵的你就幾乎已經(jīng)是條咸魚(yú)了。
Jupyter Notebook提供了兩種不同的鍵盤(pán)輸入模式——Command和Edit。其中Command模式是將鍵盤(pán)和計(jì)算機(jī)命令綁定在一起,這時(shí)單元框線是灰色的(左側(cè)藍(lán)色粗線)。Edit模式允許你將文本(或代碼)鍵入活動(dòng)單元,這時(shí)單元框線是綠色的。
用Esc和Enter分別在Command和Edit模式之間跳轉(zhuǎn)。
更多快捷鍵介紹(中文):blog.csdn.net/lawme/article/details/51034543
8. 有用的擴(kuò)展
添加擴(kuò)展是提高Jupyter Notebook效率的一種非常有效的方式,那么安裝和使用擴(kuò)展哪家強(qiáng)?這里我們推薦Nbextensions。
先是安裝(pip):
pip install jupyter_contrib_nbextensions
安裝關(guān)聯(lián)的JavaScript和CSS文件:
jupyter contrib nbextension install --user
完成此操作后,你會(huì)在Jupyter Notebook主頁(yè)頂部看到一個(gè)'Nbextensions'選項(xiàng)卡。
如果要啟用一個(gè)擴(kuò)展,只需點(diǎn)擊來(lái)激活。下面是4個(gè)比較有用的擴(kuò)展。
Code prettify:它可以讓你的代碼更美觀。
Printview:生成預(yù)覽,新增的按鈕叫jupyter nbconvert。
Scratchpad:生成一個(gè)實(shí)驗(yàn)環(huán)境(副本)跑代碼,不會(huì)對(duì)筆記本代碼造成影響。
Table of Contents (2):抓取所有標(biāo)題,并顯示在浮動(dòng)窗口中。
此外,小編也曾經(jīng)寫(xiě)過(guò)一篇《Top 5:五大最實(shí)用的Jupyter Notebook擴(kuò)展插件》,介紹了另外5種好用的擴(kuò)展,有興趣的讀者可以一起看一看。
9. 保存和共享你的筆記本
這是Jupyter Notebook中最重要和最棒的功能之一。有過(guò)寫(xiě)博客經(jīng)歷的讀者也許知道這種痛,當(dāng)你一腔熱血想把自己的成果分享給別人時(shí),可能代碼格式還沒(méi)轉(zhuǎn)完你就放棄了。大多數(shù)筆記本都采用json格式,它不是很適合共享,也不利于在博客中發(fā)布不同的單元塊。
但Jupyter Notebook不一樣,點(diǎn)擊進(jìn)入“file”后,你會(huì)看到一個(gè)“Download as”:
看到這7個(gè)選項(xiàng)后你就很開(kāi)心了,其中最常用的是.ipynb文件。你也可以用nbconvert選項(xiàng)手動(dòng)將筆記本轉(zhuǎn)換為不同的格式,如HTML和PDF。
此外,你還可以使用jupyterhub,它允許你在其服務(wù)器上托管筆記本并與多個(gè)用戶共享。許多頂尖的研究項(xiàng)目都把這作為協(xié)作方式。
10. JupyterLab
JupyterLab是今年2月推出的一個(gè)工具,從某種程度上來(lái)說(shuō),它是Jupyter Notebook的一個(gè)發(fā)展——擁有同樣的組件,但允許更靈活和更強(qiáng)大的項(xiàng)目工作方式。換句話說(shuō),它的用戶體驗(yàn)更好。
JupyterLab的特色是允許用戶在一個(gè)窗口內(nèi)安排筆記本、終端、文本文件和輸出的工作區(qū)。你可以把窗口拖到你想要的位置,也可以通過(guò)實(shí)時(shí)預(yù)覽編輯常用文件格式,如Markdown、CSV和JSON,實(shí)時(shí)查看項(xiàng)目進(jìn)展。
11. 實(shí)踐和技巧
雖然自己鉆研很有趣,但無(wú)論是學(xué)習(xí)還是工作,大部分時(shí)候你是在一個(gè)團(tuán)隊(duì)中工作的。在這種情況下,你要規(guī)范自己的操作和實(shí)踐,確保筆記本中的代碼和注釋都是正確的,方便其他人閱讀、理解。以下是一些實(shí)踐指標(biāo),僅供參考:
對(duì)每個(gè)程序員來(lái)說(shuō)最重要的事:要好好注釋!
確保你保存了代碼文檔。
形成一套命名體系,并在實(shí)踐中落到實(shí)處,方便自己和他人理解。
在剛開(kāi)始的時(shí)候?qū)胨璧膸?kù),并在旁邊注釋導(dǎo)入目的。
確保代碼行距合適,你也不想別人因?yàn)榭床欢愕难h(huán)和函數(shù)瘋掉,對(duì)吧?
當(dāng)代碼越來(lái)越多時(shí),隱藏不重要代碼,確保干凈整潔。
此外,當(dāng)你需要把成果演示給別人看時(shí)(是的你又要做該死的PPT了),你是可以偷懶直接在Jupyter Notebook里做演示的。
找到“View”,點(diǎn)開(kāi)其中的“Cell Toolbar”,然后是“Slideshow”。每個(gè)代碼塊都在右側(cè)顯示一個(gè)名為“Slide Type”的下拉選項(xiàng):
具體效果如何,請(qǐng)自己嘗試。
結(jié)語(yǔ)
寫(xiě)到這里,本文也就已經(jīng)差不多結(jié)束了,雖然在一篇文章內(nèi)塞進(jìn)這么多內(nèi)容可能會(huì)影響閱讀體驗(yàn),但我們還是真誠(chéng)地希望新手能從中找到一些有用的東西。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8349瀏覽量
132315 -
數(shù)據(jù)科學(xué)
+關(guān)注
關(guān)注
0文章
164瀏覽量
10039
原文標(biāo)題:數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí),Jupyter Notebook入門(mén)指南
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論