當前位置:
首頁 > 新聞 > 數據科學家效率提升必備技巧之Jupyter Notebook篇

數據科學家效率提升必備技巧之Jupyter Notebook篇

本文作者參加過 fast.ai 的深度學習課程,了解到很多適用於一般軟體工程的技巧,所以寫作本文梳理所學,並共享給大家。

1. Jupyter Notebook 擴展

標準的 Jupyter Notebook 很不錯,但還有更多的擴展,其中集成了大量的函數。

安裝 Jupyter 擴展包

# Install Jupyterextension packagepip install jupyter_contrib_nbextensionsjupyter contrib nbextension install—user# Install configuratorpip install jupyter_nbextensions_configurator# Install themepip install jupyterthemes## Change theme (This is my default)""" Note that you need to use 1 command to configure the setting, if you do 2 jt command, the second one will replace the first one."""jt -t grade3 -T

你可以在這裡找到更多的 Jupyter theme:https://github.com/dunovank/jupyter-themes

在安裝了 Configurator 之後,你可以看到一個新的「Nbextensions」標籤。將這幾項打鉤。

1. Autopep8

2. Collapsible Headings

3. Gist-it

數據科學家效率提升必備技巧之Jupyter Notebook篇

A. Collapsible Headings

現在,你可以將 notebook 里的長代碼摺疊,而不用再辛苦地滾動瀏覽。根據我的經驗,當進行探索性數據分析和畫圖表的時候,我需要寫很長的代碼,經常需要滾動查詢很久才能找到我想查看的代碼。現在你可以自由選擇將代碼摺疊或展開。並且我認為你甚至可以做一個目錄(我尚未嘗試這種擴展)。

數據科學家效率提升必備技巧之Jupyter Notebook篇

B. Gist-it

數據科學家效率提升必備技巧之Jupyter Notebook篇

你可以看到上圖位置中小小的 GitHub 圖標,只需要點擊它,就能發表你的 Gist。

Gist 是一個可分享 notebook 的地方,你可以在裡面分享你遇到的 bug 和其它技術難題。

其默認發表的是匿名 Gist,如果你想要用你的 GitHub 賬號發表,需要生成身份驗證的標記。兩者的主要區別在於,當你用自己的賬號發表時,可以對你的 Gist 進行編輯。

這是我為這篇文章寫的 notebook:https://gist.github.com/noklam/a0d020c17ce1715bf1d031b1cb8a9fa4

C. Autopep8

數據科學家效率提升必備技巧之Jupyter Notebook篇

你可以用這個按鈕或快捷鍵,up to you!使用這個按鈕可以幫你寫入所有的空格。PEP 8 是 Python 代碼的風格設計指南。

PEP 8:https://www.python.org/dev/peps/pep-0008/

2. 為你的任務計時

我通常會在執行循環命令之前聲明開始時間,然後用結束時間減去它以得到運行時間。這沒問題,但其實可以更簡單。使用內建的魔術命令(magic command)。它們可能看起來很不自然,但很好用(魔術命令以% 起始)。

以一個簡單的函數為例,它計算的是小於 n 的最後一個斐波那契數。

數據科學家效率提升必備技巧之Jupyter Notebook篇

你可以使用%time 為單次運行計時,或用%timeit 進行多次計時,然後得到平均值和標準差。因此這對於簡單的函數很有用。那對於調用其它函數的函數,情況如何呢?

你可以使用%prun,我創建了一個啞函數(dummy function),可以多次調用 fib1()。你可以看到該循環過程大多數時間消耗在 fib1() 上。

數據科學家效率提升必備技巧之Jupyter Notebook篇

3. Cython

Cython 是一個工具包,可以使你在 Python 中編譯 C 語言,這就是為什麼 numpy 和 pandas 很快的原因。確保你已安裝 Cython:

pip install cython

你可以不改變任何代碼而獲得雙倍的性能。這很棒,但一點也不驚奇。

數據科學家效率提升必備技巧之Jupyter Notebook篇

如果你稍微改變腳本,看看你可以獲得什麼。如果你有 C 語言編程經驗,你很可能知道當我們聲明一個變數時,我們需要定義一個數據類型。腳本確實改變了一些,因為像這樣的操作對 Python 來說是唯一的,C 語言並不具備這樣的功能。因為我們需要分配一個臨時變數以存儲這個值。

a,b = b,a

數據科學家效率提升必備技巧之Jupyter Notebook篇

(感謝 James Martini 之前指出了 fib3 中的一些錯誤)

從 582 ns 到 48 ns,快了 10 倍,實際上你並不需要改變太多腳本。我感到很興奮,因為大多數時間慢代碼對你來說是 okay 的。你真正關心的是一次又一次被調用的代碼。通過%prun 和一些 Cython 代碼,你可以獲得 C 語言的運行速度而無需編譯任何文件。

除了魔術命令,我發現 Jupyter 之中的 shell 命令也很有幫助。(魔術命令以% 開始,shell 命令以! 開始)

數據科學家效率提升必備技巧之Jupyter Notebook篇

原文鏈接:https://codeburst.io/jupyter-notebook-tricks-for-data-science-that-enhance-your-efficiency-95f98d3adee4

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

就喜歡看綜述論文:情感分析中的深度學習
亞馬遜無人商店開業了,我們到現場排隊來了一次花式測評

TAG:機器之心 |