2020年最熱門(mén)的Python庫(kù)有哪些?評(píng)判規(guī)則很簡(jiǎn)單。小編為大家尋找的庫(kù)滿足以下條件:
- 它于2020年推出或普及。
- 自發(fā)布以來(lái),一直得到很好的維護(hù)。
- 它非???,您應(yīng)該使用一下它。
免責(zé)聲明:我們的選擇在很大程度上受機(jī)器學(xué)習(xí)/數(shù)據(jù)科學(xué)庫(kù)的影響,盡管其中某些庫(kù)確實(shí)對(duì)非數(shù)據(jù)科學(xué)人士也同樣受用。
推薦好課:Python3進(jìn)階:數(shù)據(jù)分析及可視化、Keras 深度學(xué)習(xí)入門(mén)與實(shí)戰(zhàn)。
這篇文章的精神是使這些庫(kù)更為大眾所知,因此,事不宜遲,讓我們開(kāi)始吧。
1、Typer
您不一定總是需要編寫(xiě) CLI 應(yīng)用程序,但這樣做可以省不少事。在 FastAPI(https://fastapi.tiangolo.com/) 取得巨大成功之后,tiangolo (https://twitter.com/tiangolo) 使用了相同的原理為我們帶來(lái)了 Typer:一個(gè)新的庫(kù),使您可以利用Python 3.6+的類(lèi)型提示功能來(lái)編寫(xiě)命令行界面。
該設(shè)計(jì)的確使Typer脫穎而出。除了確保代碼已正確記錄之外,您還可以輕松進(jìn)行CLI界面的驗(yàn)證。通過(guò)使用類(lèi)型提示,您可以在Python編輯器(如VS Code)中獲得自動(dòng)補(bǔ)全功能,這將提高您的生產(chǎn)率。
為了增強(qiáng)其功能,Typer內(nèi)核是基于Click(https://click.palletsprojects.com/en/7.x/)的,而Click則是眾所周知,并且經(jīng)過(guò)了嚴(yán)格的測(cè)試。這意味著它可以利用其所有好處,如社區(qū)和插件,同時(shí)以更少的樣板代碼從簡(jiǎn)單開(kāi)始,并根據(jù)需要變得復(fù)雜。
Typer文檔(https://typer.tiangolo.com/)確實(shí)很有幫助,并且應(yīng)該成為其他項(xiàng)目的典范。絕對(duì)不能錯(cuò)過(guò)!
2. Rich
順著CLI的主題,誰(shuí)說(shuō)終端應(yīng)用程序必須是純白色,或者如果您是真正的黑客,則必須是綠色,是黑色?
是否要在終端輸出中添加顏色和樣式?毫不費(fèi)力地顯示漂亮的進(jìn)度條?Markdown?表情符號(hào)?Rich可以實(shí)現(xiàn)上述所有功能。查看下面示例截圖可以進(jìn)一步了解:
Rich 絕對(duì)是一個(gè)可以將使用終端應(yīng)用程序的體驗(yàn)提升到全新水平的庫(kù)。
3. Dear PyGui
盡管如我們所見(jiàn),終端應(yīng)用程序可以很漂亮,但有時(shí)還不夠,您需要一個(gè)真正的GUI。目前流行的Dear ImGui C ++項(xiàng)目(https://github.com/ocornut/imgui)的Python分支Dear PyGui正是為此而誕生。
Dear PyGui利用了在視頻游戲中廣為流行的即時(shí)模式范例(immediate mode paradigm)。這基本上意味著動(dòng)態(tài)GUI是逐幀獨(dú)立繪制的,無(wú)需保留任何數(shù)據(jù)。這使得該工具與其他Python GUI框架有著根本不同。它具有高性能,并使用計(jì)算機(jī)的GPU來(lái)促進(jìn)高度動(dòng)態(tài)界面的構(gòu)建,這在工程,仿真,游戲或數(shù)據(jù)科學(xué)應(yīng)用程序中經(jīng)常用到。
Dear PyGui可以在沒(méi)有陡峭的學(xué)習(xí)曲線的情況下使用,并且可以在Windows 10(DirectX 11),Linux(OpenGL 3)和MacOS(Metal)上運(yùn)行。
4. PrettyErrors
大道至簡(jiǎn),這是一個(gè)值得讓您思考的庫(kù):以前沒(méi)人想過(guò)這是怎么回事?
PrettyErrors只做一件事并且做得很好。在支持彩色輸出的終端中,它將隱秘的堆棧軌跡轉(zhuǎn)換成更適合用微弱的人眼解析的東西。無(wú)需再掃描整個(gè)屏幕來(lái)查找異常的原因……您現(xiàn)在就可以一目了然!
5. Diagrams
我們程序員喜歡用代碼解決問(wèn)題。但是有時(shí),我們需要向其他同事解釋復(fù)雜的架構(gòu)設(shè)計(jì)。傳統(tǒng)上,我們使用GUI工具,在其中我們可以處理圖表和可視化以放入演示文稿和文檔。但這不是唯一的方法。
Diagrams使您無(wú)需任何設(shè)計(jì)工具即可直接在Python代碼中繪制云系統(tǒng)架構(gòu)。它包含的圖標(biāo)支持多個(gè)云提供商(包括AWS,Azure,GCP)。這使創(chuàng)建箭頭和組非常容易。真的,只有幾行代碼!
基于代碼的圖表的最好之處是什么?您可以通過(guò)git使用版本控制來(lái)掌控進(jìn)度!
6. Hydra 和 OmegaConf
在進(jìn)行機(jī)器學(xué)習(xí)項(xiàng)目的研究和實(shí)驗(yàn)時(shí),總是有無(wú)數(shù)的設(shè)置可以嘗試。在非平凡解的應(yīng)用程序中,配置管理會(huì)變得相當(dāng)復(fù)雜,非???。有一種結(jié)構(gòu)化的方式來(lái)處理這種復(fù)雜性不是很好嗎?
Hydra是一種工具,可讓您以可組合的方式構(gòu)建配置,并從命令行或配置文件覆蓋某些部分。
為了說(shuō)明可以通過(guò)該庫(kù)簡(jiǎn)化的一些常見(jiàn)任務(wù),假設(shè)有一個(gè)我們正在嘗試的模型的基本體系結(jié)構(gòu),以及它的多種變體。使用Hydra,可以定義基本配置,然后運(yùn)行多個(gè)作業(yè),并進(jìn)行以下更改:
- python train_model.py variation=option_a,option_b
-
- ├── variation
- │ ├── option_a.yaml
- │ └── option_b.yaml
- ├── base.yaml
- └── train_model.py
-
Hydra 的表親 OmegaConf 為分層配置系統(tǒng)的基礎(chǔ)提供了一致的API,并支持YAML,配置文件,對(duì)象和CLI參數(shù)等不同來(lái)源。
這是21世紀(jì)進(jìn)行配置管理的必備條件!
7. PyTorch Lightning
每一種提高數(shù)據(jù)科學(xué)團(tuán)隊(duì)生產(chǎn)力的工具都值得鼓勵(lì)。沒(méi)有理由讓從事數(shù)據(jù)科學(xué)項(xiàng)目的人每次都重新發(fā)明輪子,反復(fù)思考如何更好地組織其項(xiàng)目中的代碼,使用維護(hù)得不好的“ PyTorch 樣板”,或者使用更高級(jí)別的抽象功能。
PyTorch Lightning 通過(guò)將科學(xué)與工程分離而有助于提高生產(chǎn)率。從某種意義上說(shuō),它使您的代碼更簡(jiǎn)潔,有點(diǎn)像 TensorFlow 的 Keras。但是它仍然是PyTorch,您可以訪問(wèn)所有常用的API。
該庫(kù)可幫助團(tuán)隊(duì)利用圍繞組織的軟件工程的良好實(shí)踐和明確的組件職責(zé)來(lái)構(gòu)建可輕松擴(kuò)展,以在多個(gè)GPU,TPU和CPU上進(jìn)行訓(xùn)練高質(zhì)量代碼。
一個(gè)可以幫助數(shù)據(jù)科學(xué)團(tuán)隊(duì)的初級(jí)成員產(chǎn)生更好結(jié)果的庫(kù),但是,由于整體生產(chǎn)力的提高,而且沒(méi)有放棄控制權(quán),更有經(jīng)驗(yàn)的成員會(huì)喜歡它。
8. Hummingbird
并非所有的機(jī)器學(xué)習(xí)都是深度學(xué)習(xí)。通常,您的模型由scikit-learn中實(shí)現(xiàn)的更傳統(tǒng)的算法(例如,Random Forest)組成,或者您使用諸如流行的LightGBM和XGBoost之類(lèi)的梯度增強(qiáng)方法。
但是,深度學(xué)習(xí)領(lǐng)域正在發(fā)生許多進(jìn)步。像PyTorch這樣的框架正在以驚人的速度發(fā)展,并且硬件設(shè)備已經(jīng)過(guò)優(yōu)化,可以更快地運(yùn)行張量計(jì)算并降低功耗。如果我們可以利用所有這些工作來(lái)更快、更高效地運(yùn)行傳統(tǒng)方法,那豈不是很好嗎?
這是Hummingbird的用武之地。微軟提供的這個(gè)新庫(kù)可以將訓(xùn)練有素的傳統(tǒng)ML模型編譯為張量計(jì)算。這很棒,因?yàn)樗鼓鸁o(wú)需重新設(shè)計(jì)模型。
到目前為止,Hummingbird支持轉(zhuǎn)換為PyTorch,TorchScript,ONNX和TVM,以及各種ML模型和矢量化器。推理API也與Sklearn范例非常相似,可讓您重用現(xiàn)有代碼,但將實(shí)現(xiàn)更改為Hummingbird生成的代碼。這是一個(gè)值得關(guān)注的工具,因?yàn)樗@得了對(duì)模式模型和格式的支持!
9. HiPlot
幾乎每個(gè)數(shù)據(jù)科學(xué)家在職業(yè)生涯中的某個(gè)時(shí)候都曾處理過(guò)高維數(shù)據(jù)。不幸的是,人腦沒(méi)有足夠的連線直觀地處理這種數(shù)據(jù),因此我們必須訴諸其他技術(shù)。
今年初,F(xiàn)acebook發(fā)布了HiPlot,這是一個(gè)庫(kù),可使用并行繪圖和其他圖形方式來(lái)表示信息,從而幫助發(fā)現(xiàn)高維數(shù)據(jù)中的相關(guān)性和模式。該概念已在其發(fā)布博客文章中進(jìn)行了解釋?zhuān)旧?,它是一種可視化和過(guò)濾高維數(shù)據(jù)的好方法。
HiPlot具有交互性,可擴(kuò)展性,您可以從標(biāo)準(zhǔn)Jupyter筆記本電腦或通過(guò)其自己的服務(wù)器使用它。
10. Scalene
隨著Python庫(kù)生態(tài)系統(tǒng)變得越來(lái)越復(fù)雜,我們發(fā)現(xiàn)自己正在編寫(xiě)越來(lái)越多的依賴C擴(kuò)展和多線程的代碼。在衡量性能時(shí),這成為一個(gè)問(wèn)題,因?yàn)镃Python內(nèi)置的探查器無(wú)法正確處理多線程和本機(jī)代碼。
那就是Scalene進(jìn)行救援的時(shí)候。Scalene是用于Python腳本的CPU和內(nèi)存探查器,能夠正確處理多線程代碼并區(qū)分運(yùn)行Python和本機(jī)代碼所花費(fèi)的時(shí)間。無(wú)需修改代碼,只需要在命令行中使用scalene運(yùn)行腳本,腳本就會(huì)為您生成文本或HTML報(bào)告,顯示代碼每一行的CPU和內(nèi)存使用情況。