自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

4個(gè)提高Jupiter Notebooks開發(fā)效率的工具

開發(fā) 開發(fā)工具
jupiter notebooks 在更廣泛的編程社區(qū)中名聲不佳。喬爾·格魯斯(Joel Grus)在2018年JupyterCon上勇敢地發(fā)表了著名的“我不喜歡notebooks ”演講,其中涵蓋了許多原因。

通常,notebook被認(rèn)為是促進(jìn)糟糕的編碼實(shí)踐,因?yàn)樗鼈兒茈y進(jìn)行版本控制,經(jīng)常依賴于以特定順序運(yùn)行的單元格來返回正確的結(jié)果,并且測試和調(diào)試可能很棘手。

[[400203]]

但是,當(dāng)涉及到探索性數(shù)據(jù)分析和初始機(jī)器學(xué)習(xí)模型開發(fā)等任務(wù)時(shí),jupiter notebooks 仍然是大多數(shù)數(shù)據(jù)科學(xué)家的首選。根據(jù)代碼可視化輸出(如圖表和表)以及向分析中添加豐富注釋的能力是任何其他工具都無法復(fù)制的。

雖然notebook仍然是如此受歡迎的選擇,但值得研究一些可用的選項(xiàng),以克服可能使notebook代碼不那么健壯的一些問題。在本文中,我將通過代碼示例簡要介紹為某些問題提供解決方案的4種工具。這些包括:

  1. Nbdime 更好的版本控制
  2. nbQA 運(yùn)行l(wèi)int
  3. Jupyter-nbrequirements 管理依賴
  4. nbval 進(jìn)行驗(yàn)證

Nbdime更好的版本控制

使用Github之類的工具對notebook進(jìn)行版本控制可能很困難。版本控制工具不能很好地呈現(xiàn)差異,因?yàn)樗鼈儾荒芾斫獾湫蚽otebook的邏輯結(jié)構(gòu)。這可能會(huì)使跟蹤更改和合并代碼變得困難,

Nbdime是一個(gè)旨在解決這個(gè)問題的工具,它提供了更豐富的、可視化的差異,可以很容易地看到同一notebook的不同版本之間的變化。

Nbdime可以通過pip安裝。 

  1. pip install nbdime 

這應(yīng)該會(huì)自動(dòng)安裝和啟用擴(kuò)展。如果沒有正確安裝,可以使用以下命令手動(dòng)安裝,添加一個(gè)標(biāo)志來確定為——system(系統(tǒng)范圍)、——user(當(dāng)前用戶)、——sys-prefix(當(dāng)前虛擬環(huán)境)安裝。

nbdime extensions --enable [--sys-prefix/--user/--system]

一旦一切都安裝好,如果你打開一個(gè)jupiternotebook,你現(xiàn)在應(yīng)該有以下新圖標(biāo)在你的工具欄。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具 

我創(chuàng)建了一個(gè)notebook來展示nbdime的功能,它在波士頓房價(jià)數(shù)據(jù)集上訓(xùn)練一個(gè)簡單的線性模型。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具 

新的圖標(biāo)現(xiàn)在應(yīng)該在notebook的工具欄上可用,形成nbdime的web視圖功能。這個(gè)視圖提供了對notebook所做的更改的豐富的可視化表示。

點(diǎn)擊git按鈕將顯示上次提交和當(dāng)前保存的notebook版本之間的差異。

單擊看起來像鐘面的圖標(biāo)將顯示最新檢查點(diǎn)和當(dāng)前保存的版本之間的差異。

我將對notebook做一些改變,并使用web視圖查看與上次提交的差異。

在notebook中,我改變了我正在使用的模型,并對殘差圖做了一個(gè)小的改變。讓我們看一下nbdime提供的結(jié)果差異。

從下面的圖片中可以看到,nbdime逐行和單元格顯示了自上次提交以來所更改的內(nèi)容。它甚至顯示了每個(gè)單元格的輸出是如何改變的,包括圖形。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具 

nbQA進(jìn)行代碼檢查

Linting是一個(gè)檢查代碼質(zhì)量的過程。linting工具會(huì)掃描代碼并檢查常見的樣式錯(cuò)誤。例如,Python lint通常檢查不符合廣泛使用的風(fēng)格指南(如Pep8)的代碼。

NbQa是一個(gè)可以讓你在jupiternotebook上運(yùn)行任何標(biāo)準(zhǔn)python linter的工具。下面的代碼可以通過這個(gè)工具訪問:pylint, black, auto flake, check-ast, doctest, flake8, mypy和yapf。

要安裝,只需運(yùn)行以下程序。 

  1. pip install nbqa 

讓我們在我最近創(chuàng)建的notebook上運(yùn)行pylint,這是一個(gè)常用的python linter。為此,您需要在命令行上運(yùn)行以下命令。 

  1. $ nbqa pylint dataframe_basics.ipynb 

這給了我一個(gè)標(biāo)準(zhǔn)的pylint輸出,它突出顯示了代碼中的錯(cuò)誤。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具

使用jupyter-nbrequirements管理依賴項(xiàng)

您使用notebook完成的每個(gè)項(xiàng)目可能需要不同的依賴項(xiàng)集。傳統(tǒng)上,這些是在jupiternotebook外部使用虛擬環(huán)境管理的。

Jupyter nbrerequirements是一個(gè)工具,它可以讓你管理依賴關(guān)系,并創(chuàng)建一個(gè)獨(dú)立的優(yōu)化環(huán)境,所有這些都在notebook中管理。

要開始使用pip安裝庫并使用下面所示的命令啟用notebook擴(kuò)展名。 

  1. $ pip install jupyter-nbrequirements  
  2. $ jupyter nbextension install --user --py jupyter_nbrequirements 

您可以通過使用單元魔術(shù)命令或使用將在notebook頂部顯示的UI來在notebook中安裝庫。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具 

要使用單元格魔法安裝像pandas這樣的庫,只需在notebook單元格中輸入以下內(nèi)容。 

  1. %dep add pandas --version ">=0.24.0" 

使用nbval進(jìn)行驗(yàn)證

正如本文前面所描述的,notebook最常用于模型的探索性分析和初始開發(fā)。通常,存儲(chǔ)這種類型的分析和最初的項(xiàng)目開發(fā)是非常有用的,既可以用于文檔目的,也可以用于將來可能基于這項(xiàng)工作的發(fā)現(xiàn)進(jìn)行構(gòu)建。

py測試插件nbval是驗(yàn)證存儲(chǔ)的notebook的有用工具。Nbval將自動(dòng)運(yùn)行notebook中的每個(gè)單元格,并檢查當(dāng)前輸出是否與存儲(chǔ)在上一個(gè)保存版本的.ipynb文件中的輸出匹配。這作為對底層源代碼中沒有任何更改的檢查,從而驗(yàn)證原始分析或?qū)嶒?yàn)的結(jié)果仍然是可靠的。

要使用此工具,首先通過以下命令進(jìn)行pip安裝。 

  1. pip install nbval 

通過運(yùn)行以下命令,可以對目錄中包含的所有文件執(zhí)行測試。 

  1. py.test --nbval 

或者在一個(gè)特定的notebook上運(yùn)行這行代碼。

我在現(xiàn)有的兩本notebook上進(jìn)行測試。第一個(gè)運(yùn)行沒有錯(cuò)誤,并給出如下輸出。 

4個(gè)提高jupiter Notebooks開發(fā)效率的工具 

下面給出了一個(gè)notebook測試失敗的例子。 

 

雖然notebook經(jīng)常用于探索性分析和初始模型開發(fā),而不是生產(chǎn)代碼,但仍然應(yīng)該被視為一個(gè)重要的工作存儲(chǔ)。最初的實(shí)驗(yàn)和分析是過去結(jié)果的有用記錄,在以后的日子里應(yīng)該可以回到notebook上建立你的工作。因此,值得探索的工具可以幫助使在notebook中編寫的代碼更加健壯和可復(fù)制。

本文介紹了四種工具,它們可以幫助使notebook中的代碼更好、更可重用。有關(guān)可重復(fù)數(shù)據(jù)科學(xué)代碼的更多提示,請參閱下面我之前的文章。

 

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2015-12-15 09:50:12

Linux開發(fā)效率工具

2015-07-22 09:44:07

Android開發(fā)Web工具

2012-03-14 09:35:56

JavaMaveneclipse

2020-11-26 12:05:44

Python小工具代碼

2021-05-20 11:30:17

Python工具代碼

2021-05-10 11:06:31

Python工具代碼

2012-03-07 09:41:01

Java

2015-07-20 10:54:47

IOS提高效率工具

2023-11-22 08:26:03

HutoolJava工具集

2022-09-05 14:17:48

Javascript技巧

2015-07-15 10:27:48

Android代碼質(zhì)量工具

2017-11-06 08:27:26

開發(fā)

2014-06-27 09:45:03

IE工具開發(fā)者工具

2020-06-04 15:55:54

GitHub代碼開發(fā)者

2018-09-27 09:00:00

DjangoPython

2022-03-24 09:34:06

Bootstrap

2019-05-13 14:00:13

CSS框架前端

2016-01-04 10:20:36

2021-04-29 07:40:21

VSCode快捷鍵

2023-10-27 18:11:42

插件Postman代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號