前兩天我們?yōu)榇蠹铱偨Y(jié)了一下AI在2018年的發(fā)展以及對(duì)2019年AI應(yīng)用的展望跨晴,今天我們便將回歸到技術(shù)博客的本質(zhì)馍忽,為大家講講為什么我對(duì)Jupyter Notebook如此推崇夜只,以及為什么Jupyter Notebook與機(jī)器學(xué)習(xí)/數(shù)據(jù)分析是完美的搭配組合九榔。
在講為什么之前芳室,先來(lái)介紹一下什么是Jupyter Notebook(以下簡(jiǎn)稱Jupyter)板丽。簡(jiǎn)單來(lái)說(shuō)呈枉,它是一種模塊化的Python編輯器(現(xiàn)在也支持R等多種語(yǔ)言)趁尼,即在Jupyter中,你可以把大段的Python代碼碎片化處理猖辫,分開(kāi)每一段來(lái)運(yùn)行酥泞。在軟件開(kāi)發(fā)中,Jupyter可能顯得并沒(méi)有那么好用啃憎,這個(gè)模塊化的功能反而會(huì)破壞掉程序的整體性芝囤;但是當(dāng)你在做數(shù)據(jù)處理、分析辛萍、建模悯姊、觀察結(jié)果等的時(shí)候,Jupyter模塊化的功能不僅會(huì)為你提供更好地視覺(jué)體驗(yàn)贩毕,更能大大縮小運(yùn)行代碼及調(diào)試代碼的時(shí)間悯许,同時(shí)還會(huì)讓你整個(gè)處理和建模的過(guò)程變得異常清晰,接下來(lái)我將為大家一一詳細(xì)講述Jupyter的這些優(yōu)點(diǎn)辉阶。
Jupyter Notebook將Python的交互式特點(diǎn)發(fā)揮到了極致
熟悉Python的同學(xué)一定對(duì)Python的交互式功能感觸頗深先壕。當(dāng)工作后有一次和一個(gè)做嵌入式好友聊起Python時(shí),同學(xué)表示他被Python的易讀性和交互性所震驚了谆甜。做嵌入式用的C和C++每次都要經(jīng)過(guò)編譯垃僚,而且每一行的代碼沒(méi)有辦法單獨(dú)運(yùn)行。與之不同的是规辱,Python的每一行都像是人類交流所用的文字一樣谆棺,簡(jiǎn)單易懂且有交互性,所謂交互性罕袋,就是有問(wèn)有答包券,你輸入一句,它便返回一句的結(jié)果炫贤。但在一般的IDE中(如PyCharm),Python的這一交互功能被極大地限制付秕,通常我們會(huì)將程序整段編寫之后一起運(yùn)行兰珍。而在Jupyter當(dāng)中,我們可以每寫幾行或者每完成一個(gè)小的模塊便運(yùn)行一次询吴。也許對(duì)于軟件工程師們來(lái)說(shuō)掠河,這個(gè)功能并沒(méi)有多大的吸引力;但是對(duì)身為機(jī)器學(xué)習(xí)工程師的我們來(lái)說(shuō)猛计,這個(gè)功能可以說(shuō)是我們的大救星唠摹。
熟悉機(jī)器學(xué)習(xí)和數(shù)據(jù)分析的朋友一定知道,分析和建模是非常碎片化的工作奉瘤,而每一塊的碎片又有著非常強(qiáng)的獨(dú)立性勾拉,甚至可以說(shuō)除了數(shù)據(jù)本身之外煮甥,每一塊的代碼之間并沒(méi)有很強(qiáng)的關(guān)聯(lián)性篮赢。數(shù)據(jù)分析和處理的過(guò)程往往是一個(gè)不斷試驗(yàn)的過(guò)程沛豌,我們需要一次又一次的改變預(yù)處理的方式草慧、嘗試不同的特征工程處理唆樊、一遍又一遍的調(diào)整著模型參數(shù)等等等等芭梯。每一部分的工作都需要反復(fù)試驗(yàn)反復(fù)修改瓤帚,而下一模塊需要用到的只不過(guò)是上一模塊輸出的數(shù)據(jù)臭猜。通過(guò)Jupyter挪钓,我們可以最快的得知自己做出的調(diào)整是好還是壞批销,并盡快進(jìn)入到下一次的試驗(yàn)當(dāng)中洒闸。
以下是Jupyter Notebook與其他IDE輸出結(jié)果的對(duì)比:
說(shuō)到Jupyter Notebook,就不得不提到Anaconda均芽。Anaconda是一款便捷的環(huán)境管理工具丘逸,利用Anaconda可以輕松創(chuàng)建虛擬環(huán)境,快速下載安裝Python中的各種函數(shù)庫(kù)骡技。Anaconda中集成了1400數(shù)據(jù)科學(xué)/機(jī)器學(xué)習(xí)的函數(shù)庫(kù)鸣个,目前這些庫(kù)適配于Python 3.6,Python 3.7布朦,以及Python 2.7三個(gè)版本囤萤。Anaconda讓機(jī)器學(xué)習(xí)在Jupyter中更容易實(shí)現(xiàn),也更容易去觀測(cè)是趴。
以下是部分Anaconda中的函數(shù)庫(kù):
Jupyter Notebook更利于匯報(bào)和教學(xué)
Jupyter在工作匯報(bào)和教學(xué)方面也是非常的優(yōu)秀涛舍。由于Jupyter本身的模塊化和內(nèi)容的清晰化,使得其天生具有如PPT一般的展示工作成果的功能唆途。
如上圖所示富雅,由于Jupyter中可以將輸出結(jié)果嵌套在Notebook中肛搬,并且支持Markdown語(yǔ)句的操作蛤奢,這樣使得你可以在Jupyter中輸入任何你需要展示的內(nèi)容,并且這些內(nèi)容都會(huì)以一種有組織有層次的樣子排列出來(lái)陶贼。
而當(dāng)Jupyter被應(yīng)用于教學(xué)時(shí)拜秧,老師可以利用這個(gè)特點(diǎn)設(shè)置相應(yīng)的題目以及部分的講解內(nèi)容志衍,而學(xué)生則負(fù)責(zé)填滿老師所留的空白足画,以達(dá)到老師作業(yè)的要求医舆。目前Jupyter已經(jīng)被各大慕課(MOOC)平臺(tái)廣泛應(yīng)用蔬将。