網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python項目
Python不能用于大型項目?關(guān)于Python的10大誤解 企業(yè)視頻課程
語言多元化是PayPal編程文化中一個重要的組成部分。在C++和Java長期流行的同時,更多的團(tuán)隊選擇了Jva和Scala。同時,Braintree的收購也引入了一個久經(jīng)世故的Ruby社區(qū)。Python作為一門特別的語言,在eBay和PayPal有很長的歷史。而且其流行程度依然有增不減。
eBay的開發(fā)者支持Python這個應(yīng)用于基層領(lǐng)域多年的語言。甚至在eBay管理層官方支持Python以前,技術(shù)人員就開始使用Python。我在幾年前加入PayPal并選擇Python來寫內(nèi)部應(yīng)用,然而,我卻發(fā)現(xiàn)了PayPal中將近15年以前的Python代碼。
目前,Python 支撐著 超過50個項目, 包括:
功能和產(chǎn)品型, 例如 eBay Now 和 RedLaser運營和基礎(chǔ)設(shè)施型**, 從開放的 OpenStack 到專有設(shè)施中間層服務(wù)和應(yīng)用型**, 例如 PayPal 用來設(shè)定價格以及檢測用戶可用功能的那個(服務(wù)/應(yīng)用)監(jiān)測代理和接口*型*, 用于涉及到部署和安全的一些用例批處理任務(wù)*型*, 例如數(shù)據(jù)導(dǎo)入,價格調(diào)整,及其它項目以及不計其數(shù)的開發(fā)者工具
在接下來的文章里我將詳細(xì)介紹那些使得 eBay 和 PayPal 的 Python 生態(tài)系統(tǒng)從2011年的不超過25個工程師到2014年超過260個工程師所使用的技術(shù)和舉措。對于本文,我則會專注于10個不得不予以揭露的關(guān)于 eBay 和 PayPal 的企業(yè)環(huán)境的謬誤。
謬誤 #1: Python 是一門新語言
伴隨著所有的初創(chuàng)公司正在使用它以及孩子們最近也在學(xué)習(xí)它的事實,這個謬誤為何仍然存在是可以理解的。實際上 Python 已經(jīng) 超過23歲了, 它最初發(fā)布于1991年, 早于 HTTP 1.0協(xié)議 5年且早于 Java 4年. 目前比較有著名的很早就使用 Python 的例子是在1996年: Google 的第一個成功的網(wǎng)絡(luò)爬蟲。
如果你對于長長的 Python 歷史比較好奇,Python 的作者 Guido van Rossum 已經(jīng)為你準(zhǔn)備好整個故事。
謬誤 #2: Python 沒有被編譯
不像 C++ 一樣需要一個獨立的編譯器工具鏈,Python 實際上被編譯成了字節(jié)碼,和 Java 或者許多其他的編譯型語言十分相似。更進(jìn)一步的編譯過程,如果有的話, 取決于運行時環(huán)境, 不管是 CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的進(jìn)程式虛擬機(process virtual machine)。參考 謬誤 #6 來了解更多。
一條在 PayPal 以及其它地方的通用原則就是,(應(yīng)用的)安全性不能依賴于代碼的已編譯狀態(tài)。更為重要的是加強運行時環(huán)境的安全,因為實質(zhì)上每種語言都有一個解碼器,或者能被攔截并導(dǎo)出受保護(hù)的狀態(tài)。參考下一條謬誤來了解更多的 Python 安全性問題。
謬誤 #3: Python 不安全
輕量級 Python 的親和力可能使他看起來不怎么可怕,但是這里直覺很大程度上是受到了誤導(dǎo)的. 安全的一個核心原則就是盡可能讓呈現(xiàn)的目標(biāo)更小. 大系統(tǒng)是違背安全原則的,因為他們趨向于 使行為過渡集中化, 并且也 讓開發(fā)者難于理解. Python 通過倡導(dǎo)簡潔化來邊緣化這些惡心的問題. 更有甚者, CPython 通過讓自己成為一個簡單、穩(wěn)定并且易于審核的虛擬機來使這些問題得到解決. 事實上,近期 Coverity Software 的一個分析結(jié)果顯示 CPython 得到了他們的最高質(zhì)量評級。
Python 還擁有一系列可擴展的開源、產(chǎn)業(yè)標(biāo)準(zhǔn)化的安全庫序列. 在PayPal, 我們把安全和授信看做是重中之重, 我們發(fā)現(xiàn) hashlib, PyCrypto, 以及 OpenSSL, 通過 PyOpenSSL 和我們自己的定制構(gòu)建的結(jié)合,涵蓋了 PayPal 多樣化的安全和性能需求。
這些諸多的原因,使得 Python 成為PayPal(和eBay)的應(yīng)用程序安全團(tuán)隊在某些業(yè)務(wù)中最快的選擇. 這里有把Python用在PayPal的安全第一環(huán)境中的幾個以安全為基礎(chǔ)應(yīng)用程序:
創(chuàng)建安全代理,以促進(jìn)密鑰的輪換以并鞏固加密實現(xiàn)同業(yè)界領(lǐng)先的 HSM 技術(shù)集成為缺乏兼容性的技術(shù)棧構(gòu)建受TLS保護(hù)的封裝代理為我們內(nèi)部的互相認(rèn)證計劃生成鍵和證書開發(fā)主動的漏洞掃描器
另外,還有無數(shù)存在安全隱患的用Python構(gòu)建,面向操作的系統(tǒng), 諸如防火墻和連接管理. 未來,我們一定回去深入的整合PayPal Python的安全事項.
謬誤 #4: Python 是一門腳本語言
Python 確實可以用來編寫腳本,并且因其簡單的語法、跨平臺并且無所不在于 Linux, Macs, 和其它Unix 機器而成為這個領(lǐng)域的領(lǐng)跑者之一。
事實上, Python 可能是常規(guī)用途編程語言中最靈活的技術(shù). 以下是一些實例:
電信基礎(chǔ)設(shè)施 (Twilio)支付系統(tǒng) (PayPal, Balanced Payments)神經(jīng)科學(xué)和心理學(xué) (許多, 許多, 例子)數(shù)值分析和工程 (numpy, numba, 以及 更多其它)動畫(LucasArts, Disney, Dreamworks)游戲后臺 (Eve Online, Second Life, Battlefield, 以及 其它很多)Email 基礎(chǔ)設(shè)施 (Mailman, Mailgun)媒體存儲和處理 (YouTube, Instagram, Dropbox)操作和系統(tǒng)管理 (Rackspace, OpenStack)自然語言處理(NLTK)機器學(xué)習(xí)和計算機版本 (scikit-learn, Orange, SimpleCV)安全性和滲透性測試 (很多很多 以及 eBay/PayPal大數(shù)據(jù) (Disco, Hadoop support)如理 (Calendar Server, 它 驅(qū)動了 Apple iCal)搜索系統(tǒng) (ITA, Ultraseek, 還有 Google)Internet 基礎(chǔ)設(shè)施 (DNS) (BIND 10)
更別提網(wǎng)站和web服務(wù)了,那些都不在少數(shù). 事實上,PayPal工程師看起來像是有興趣致力于基于Python的web特性,比如 YouTube 和 Yelp. 如果對Python成功案例的更大清單感興趣,那就看看官方的清單吧.
謬誤 #5: Python 是弱類型的
Python 類型系統(tǒng)的特點是擁有強大、靈活的類型操作. 維基百科上對此作出的闡述.
而存在一個不爭而有趣的事實是, Python 是比Java更加強類型的. Java 對于原生類型和對象區(qū)分了類型系統(tǒng),它讓null存在于一個灰色地帶. 另一方面,現(xiàn)代的 Python 擁有一個統(tǒng)一的強類型系統(tǒng), 其中什么都沒有 的類型是明確指定的. 更進(jìn)一步的,JVM自身也是動態(tài)類型的,因為可以把它的 根源 追溯到由Sun所收購的Smalltalk VM的一個實現(xiàn)。
Python的類型系統(tǒng) 很棒,但要提供給企業(yè)級使用,目前仍然還有許多更重大的事項需要關(guān)注。
謬誤 #6: Python 速度慢
首先是有一個重要區(qū)別: Python 是一門編程語言,而不是運行時環(huán)境. Python 擁有幾個實現(xiàn):
CPython是參考實現(xiàn), 且也是廣泛發(fā)布和使用的實現(xiàn).Jython是Python用于JVM的是一個成熟的實現(xiàn).IronPython是 Microsoft 針對其自家的通用語言運行時——又名 .NET,實現(xiàn)的Python .PyPy是一個正在日趨成熟的Python實現(xiàn),擁有JIT編譯,增量垃圾收集諸多先進(jìn)的特性.每一個運行時都有其自己的性能特點, 而且他們本身也不慢. 這里更重要的地方在于不能錯誤地把一個性能指標(biāo)分派到一門編程語言智商. 應(yīng)該總是把該評估用在一個應(yīng)用程序運行時上面,最好是針對一個特定的使用場景。
清楚了那些事項之后,下面就是一些有Python提供的小項,體現(xiàn)其重要的性能優(yōu)勢:
把 NumPy 用作 Intel 的 MKL SIMD接口PyPy的 JIT 編譯能 達(dá)到比C還快的性能Disqus 能在同樣的100個盒子上容納兩億五千萬到5億用戶
誠然,這些都不是最新的列子,只是我個人的最愛罷了. 這將很容易扯到高性能Python以及獨立提供的運行時這些廣闊的領(lǐng)域. 我們不應(yīng)只是專注于解決單個特殊的案例, 而是應(yīng)該把注意力放在對開發(fā)人員在 最終產(chǎn)品性能 方面的生產(chǎn)力的普遍影響上面, 特別是在一種企業(yè)級環(huán)境之下。
C++ vs Python,. 兩種語言在同一個輸出下的對比.
給定足夠的時間,一個循規(guī)蹈矩的開發(fā)者只會按照下面這種經(jīng)過論證的方式來編寫精確高效的軟件:
設(shè)計實現(xiàn)一個可以正確完成任務(wù)的軟件,包括開發(fā)單獨的測試測試性能,明確瓶頸優(yōu)化,根據(jù)測試和Amdahl法則,并且利用Python與C的淵源
雖然這聽起來很簡單,但是即使是老道的工程師,這依舊是一個非常耗時的過程。Python設(shè)計之初就考慮到了這一套開發(fā)流程。根據(jù)我們的經(jīng)驗,通常C++和Java項目完成一次迭代流程的時間,夠Python項目完成三次迭代流程。今天,PayPal和eBay中不乏有Python項目使用更少的代碼戰(zhàn)勝了同類C++和Java項目,這多虧了快速的開發(fā)使得仔
細(xì)的裁剪和優(yōu)化變得可能。
Myth #7: Python無法做到大規(guī)模
大規(guī)模有許多定義,但無論怎樣,YouTube是個大規(guī)模網(wǎng)站。每月UV超過十億,每分鐘上傳的視頻時長超過100小時,占用互聯(lián)網(wǎng)帶寬的20%,所有這一切都以Python作為核心技術(shù)。Dropbox,Disqus, Eventbrite, Reddit, Twilio, Instagram, Yelp, EVE Online, Second Life,,以及,是的,以及eBay和PayPal中都有Python大規(guī)模的例子,這些證明大規(guī)模不僅僅是可能:它是一種模式。
成功的關(guān)是鍵簡單性且一致性。CPython,Python的主要虛擬機,其最大限度地放大了這些特性,從而演變出了一個精確可測的運行時。人們很難發(fā)現(xiàn) Python程序員關(guān)心垃圾的收集暫?;驊?yīng)用地啟動時間。擁有強大的平臺和網(wǎng)絡(luò)支持,Python其本身自然而然的智能水平可擴展,BitTorrent就是其充分的體現(xiàn)。
此外,規(guī)模化主要涵蓋測量和迭代。Python是以分析和優(yōu)化為要義建立的??碝yth #6了解更多Python如何垂直拓展的細(xì)節(jié)。
Myth #8: Python缺少好的并發(fā)支持
除了偶爾叫囂性能和規(guī)模化的問題,有人想提的技術(shù)些,”Python缺乏并發(fā),”或者,”GIL怎么樣?”如果幾十個反例仍不足以支持Python水平及垂直拓展規(guī)模的能力,那么再更深地解釋CPython實現(xiàn)細(xì)節(jié)也不會有幫助,所以我會簡短些。
Python擁有強大的并發(fā)原語,包括generators, greenlets, Deferreds, 和futures.。Python有優(yōu)秀的并發(fā)框架,包括eventlet, gevent,和Twisted。Python在定制運行時尚投入了驚人的工作量,包括Stackless和 PyPy。所有煩人這些和更多表明,根本不存工程師們在Python并發(fā)編程方面的缺憾。同時,所有這些都正在被正式的在企業(yè)生產(chǎn)環(huán)境中支持或使用。例如,請參考Myth #7。
全局解釋器鎖,或稱GIL,是Python在大多數(shù)應(yīng)用場景下的性能優(yōu)化,也是幾乎所有CPython實現(xiàn)代碼的開發(fā)上的基礎(chǔ)優(yōu)化。GIL使得Python可以很便利地使用操作系統(tǒng)的線程或輕線程(通常指greenlets),且不影響使用多進(jìn)程。更多相關(guān)信息,請看該主題的Q&A列表,以及Python文檔中的介紹。
在PayPal中,一個典型服務(wù)的部署需要多臺機器,多個進(jìn)程,多個線程,以及一個數(shù)字非常龐大的greenlets,相當(dāng)于一個非常強大可擴展的并行環(huán)境(見下圖)。在大多數(shù)的企業(yè)環(huán)境中,團(tuán)隊更傾向于往更高層次過度,謹(jǐn)慎并注重災(zāi)難恢復(fù)。然而,在某些情況下,每臺機器每天Python服務(wù)仍然處理數(shù)以百萬計的請求,而且輕松處理。
一個基于單一worker的協(xié)同異步架構(gòu)草圖。最外層的盒子是進(jìn)程,下一個層次為線程,這里這些線程都是輕線程。操作系統(tǒng)處理線程間的搶占,而I/O異步協(xié)同合作。
謬誤 #9: Python 程序員很稀缺
事實上,現(xiàn)在使用 Python 的 web 開發(fā)者的確沒有使用 PHP 或者 Java 的 web 開發(fā)者多。這可能主要是由于企業(yè)需求和教育之間的相互作用導(dǎo)致的,不過 教育領(lǐng)域(教學(xué)所使用的編程語言)的趨勢使得情況可能產(chǎn)生變化 。
也就是說,使用 Python 的開發(fā)者并不稀缺?,F(xiàn)在全世界有數(shù)百萬使用 Python 的開發(fā)者。已有幾十個Python 技術(shù)大會、 StackOverflow 上成千上萬的 Python 內(nèi)容問答、雇傭大量使用 Python 的開發(fā)者的大企業(yè)比如 YouTube 、 美國銀行( Bank of American )和 LucasArts/Dreamworks 等等,這些都顯而易見地證實了這一點。在 eBay 和 PayPal 我們一直保持擁有幾百位使用 Python 的正式開發(fā)者,這是怎么做到的呢?
那么,當(dāng)一個項目被創(chuàng)建時為什么它會被首推?對于孩子來,大學(xué)生和教授們來說,Python作為第一門程序設(shè)計語言是非常易于學(xué)習(xí)的。在eBay,僅僅需要一個星期,一個新的Python程序員就能展示一個真正的成果,并且他們開始散發(fā)光芒常常只要2-3個月,通過Internet的寶藏(互動式教程,書,文檔和開源代碼庫)一切皆有可能。
另外一個重要的考慮因素是,項目使用Python會更簡單,它不會像其他項目那樣需要那么多的開發(fā)者。在謬誤6和謬誤9中提到的那樣,在Python項目中,學(xué)習(xí)像Instagram那樣的高效團(tuán)隊是一個常見的比喻,并且這確實是我們在eBay和PayPal的經(jīng)驗。
Myth #10: Python不適應(yīng)于大項目
Myth #7 討論了大規(guī)模運行Python的項目,但開發(fā)Python大規(guī)模項目是什么情況呢?正如在Myth #9中提到的,大多數(shù)Python不被人看好。 然而Instagram在其被億元美金收購當(dāng)天達(dá)到千萬的點擊量,而整個公司只有十幾個人。Dropbox在2011年只有70個工程師,其他團(tuán)隊更少。所以,Python適合大規(guī)模團(tuán)隊嗎?
美國銀行實際上有超過5000的Python開發(fā)者,一個單獨的項目超過一千萬行Python代碼。JP摩根也經(jīng)歷了類似的轉(zhuǎn)變。YouTube也有數(shù)千的開發(fā)者和數(shù)百萬行的代碼。大規(guī)模產(chǎn)品和團(tuán)隊每天都在使用Python,因為它具有良好的模塊化和封裝特性,在特定方面許多的大規(guī)模開發(fā)建議是一致的。工具,強大的慣例以及代碼審查促使了項目規(guī)?;芾淼默F(xiàn)實。
幸運的是,Python發(fā)展于上面所提到的好的奠基。我們在檢查執(zhí)行使用pyflakes以及其他工具進(jìn)行Python代碼的靜態(tài)分析,正如堅持PEP8——Python語言的基礎(chǔ)風(fēng)格指南。
最后,應(yīng)該指出的是,除了調(diào)度加速Myth #6以及#7中所提到的,使用Python的項目通常需要更少的開發(fā)者。我們常見的成功案例中,使用Java或C++的項目通常有3-5開發(fā)者耗時2-6個月,最終由單一的開發(fā)者在2-6周(或小時,因為這些原因)完成?...
2017年最流行的十大Python庫 互聯(lián)網(wǎng)視頻課程
年末是你需要思考過去一年的成就的時候。對于程序員來說,這通常是回顧今年發(fā)布的或者最近流行的開源庫,因為它們是解決特定問題的絕佳工具。
在過去的兩個多年中,我們都會在博客中選取我們認(rèn)為在Python社區(qū)最有用的庫。今年也是如此。
這一次,這份列表基本都是機器學(xué)習(xí)(ML)的庫。請非ML庫的作者而且能夠諒解,這都怪我們的偏見。希望在讀到本文的人能評論并提出一些被我們忽略的偉大的庫幫助我們矯正它。
那么,讓我們開始盤點吧!
1. Pipenv
鏈接:https://github/pypa/pipenv
我們?yōu)榻衲昴瓿醢l(fā)布的這個工具排到榜首,它有能力影響每個Python開發(fā)者的工作流程,它已經(jīng)成為Python管理依賴項的官方推薦工具。
https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv
Pipenv最初是由Kenneth Reitz創(chuàng)立的一個周末項目,旨在將其他包管理者(如npm或yarn)的創(chuàng)意帶入Python中。不再去安裝virtualenv,virtualenvwrapper,管理requirements.txt文件,并確保對依賴項的依賴版本的再現(xiàn)性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依賴關(guān)系(通常使用命令添加,刪除或更新依賴關(guān)系)。該工具可以生成一個Pipfile.lock文件,使你的構(gòu)建deterministic,幫助你避免那些因為你不知道是否需要的模糊依賴產(chǎn)生的難以捕捉的bug。
當(dāng)然,Pipenv還有很多其他的特性,并且它的文檔非常好,所以一定要看一下,并且在你所有的Python項目中使用它,就像我們在Tryolabs中做的那樣。
2. PyTorch
鏈接:http://pytorch.org/
說到今年流行,尤其是在深度學(xué)習(xí)(DL)社區(qū)流行的庫,那就要提到今年Facebook推出的DL框架PyTorch。
PyTorch構(gòu)建并改進(jìn)了流行的Torch框架,與Lua不同它是基于Python的。由于最近幾年人們大多轉(zhuǎn)向使用Python進(jìn)行數(shù)據(jù)科學(xué)研究,它是讓DL更容易接近的重要一步。
最值得注意的是,PyTorch已經(jīng)成為眾多研究人員的首選框架之一,因為它實現(xiàn)了動態(tài)計算圖(Dynamic Computational Graph)范式。當(dāng)使用TensorFlow,CNTK或MXNet等其他框架編寫代碼時,必須首先定義計算圖。該圖指定了我們的代碼運行的所有操作,這些操作稍后會被編譯并可能被框架優(yōu)化,以便能夠在GPU上并行運行得更快。這個范式被稱為靜態(tài)計算圖,因為你可以利用各種優(yōu)化,而且這個圖形一旦建成,就有可能運行在不同的設(shè)備上(因為執(zhí)行與構(gòu)建分離)。然而,在自然語言處理等許多任務(wù)中,工作的量通常是可變的:在將圖像提供給算法之前,可以將圖像調(diào)整為固定的分辨率,但不能對可變長度的句子進(jìn)行相同的處理。這是PyTorch和動態(tài)圖的亮點,通過在代碼中使用標(biāo)準(zhǔn)的Python控制指令,圖在執(zhí)行時被定義,給了你很多這對于一些任務(wù)來說必不可少的自由。
當(dāng)然,PyTorch也為你計算梯度(就像你期望從任何現(xiàn)代的DL框架中獲得的那樣),速度非常快,而且是可擴展的,所以為什么不試試呢?
3. caffe2
鏈接:https://caffe2.ai/
這可能聽起來很瘋狂,但Facebook今年也發(fā)布了另一個很棒的DL框架。
原來的Caffe框架已被大眾使用多年,以無與倫比的性能和久經(jīng)考驗的代碼庫而聞名。然而,最近DL的趨勢使這個框架在某些方面停滯不前。Caffe2是將Caffe帶入“現(xiàn)代世界”的嘗試。
它支持分布式訓(xùn)練,部署(即使在移動平臺上),最新的CPU并且支持CUDA的硬件。雖然PyTorch可能更適合研究,但Caffe2適合在Facebook上看到的大規(guī)模部署。
另外,請看看近期的ONNX。你可以在PyTorch中構(gòu)建和訓(xùn)練模型,同時使用Caffe2進(jìn)行部署!
4. Pendulum
鏈接:https://github/sdispater/pendulum
去年,Arrow被列入榜單,它旨在通過使用Python的datetime讓你生活輕松一些。而今年,我們輪到Pendulum了。
Pendulum的優(yōu)點之一是它是Python標(biāo)準(zhǔn)datetime類嵌入式的替代品,因此可以輕松地將其與現(xiàn)有代碼集成,并且只有在實際需要時才使用它的功能。者已經(jīng)特別注意確保正確地處理時區(qū),默認(rèn)每個實例的timezone-aware和UTC。你也將得到一個擴展timedelta,使datetime算法更簡單。
與其他現(xiàn)有的庫不同,它努力使API具有可預(yù)測的行為,所以你知道會發(fā)生什么。如果你正在做任何與datetimes有關(guān)的重要工作,這會讓你更快樂?。ú榭锤啵篽ttps://pendulum.eustace.io/docs/)。
5. Dash
https://plot.ly/products/dash/
如果你正在做數(shù)據(jù)科學(xué),你會使用Python生態(tài)系統(tǒng)中的優(yōu)秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,這對你和你的同事來說非常棒。但是,你如何與那些不知道如何使用這些工具的人分享這項工作呢?你如何建立一個界面,使人們可以輕松地使用數(shù)據(jù),可視化過程?過去,你需要一個前端團(tuán)隊,用Javascript知識來構(gòu)建這些GUI。但現(xiàn)在不用了。
今年宣布的Dash是一個用于構(gòu)建Web應(yīng)用程序的Python開源庫,尤其是那些充分利用數(shù)據(jù)可視化的Web應(yīng)用程序。它建立在Flask,Plotly.js和React的基礎(chǔ)上,并提供了抽象,使你不必學(xué)習(xí)這些框架,更高效的研發(fā)。這些應(yīng)用程序可以在瀏覽器中呈現(xiàn)并響應(yīng),因此在移動設(shè)備中也能使用。
了解更多關(guān)于Dash:https://plot.ly/dash/gallery
6.PyFlux
Python中有許多庫用來做數(shù)據(jù)科學(xué)和ML,但是當(dāng)你的數(shù)據(jù)點是隨著時間的推移而變化的度量(例如股票價格,從儀表中獲得的度量等等)時,這樣的庫就很少了。
PyFlux是一個專門為時間序列而開發(fā)的 Python開源庫。時間序列研究是統(tǒng)計學(xué)和計量經(jīng)濟(jì)學(xué)的一個分支,目標(biāo)可以描述時間序列的表現(xiàn)(依據(jù)隱藏組件或特征),也能預(yù)測時間序列未來的表現(xiàn)。
PyFlux允許用于時間序列建模的概率方法,并且已經(jīng)實現(xiàn)了幾個像GARCH這樣的現(xiàn)代時間序列模型。
7.Fire
https://github/google/python-fire
通常情況下,你需要為自己的項目制作命令行界面(CLI)。除了傳統(tǒng)的argparse,Python中還有click或docopt可用。谷歌今年宣布的Fire,在解決同樣的問題上提出了不同的方法。
Fire是一個開源的庫,可以為任何Python項目自動生成一個CLI。沒錯,是自動的:你幾乎不需要編寫任何代碼或文檔來構(gòu)建你的CLI!想完成你的CLI,只需要調(diào)用一個Fire方法并把它傳遞給一個CLI:一個函數(shù),一個對象,一個類,一個字典,甚至你可以不傳遞任何參數(shù)(這會將你的整個代碼轉(zhuǎn)換為一個CLI)。這個庫可以為你節(jié)省很多時間。
8.imbalanced-learn
https://github/scikit-learn-contrib/imbalanced-learn
在一個完美世界的里,我們會有完美平衡的數(shù)據(jù)集,我們將它們都拿來將訓(xùn)練模型,多么美好。可惜現(xiàn)實世界不是這樣的,某些任務(wù)更傾向于不平衡的數(shù)據(jù)。例如,在預(yù)測信用卡交易中的欺詐行為時,你會預(yù)測絕大多數(shù)交易(+ 99.9%)實際上是合法的。如果我們簡單的訓(xùn)練ML算法會出現(xiàn)令人沮喪的性能,所以在處理這些類型的數(shù)據(jù)集時需要特別小心。
幸運的是,這是一個已經(jīng)被研究過的問題,存在各種各樣解決的技術(shù)。Imbalanced-learn是一個Python包,它提供了關(guān)于這些技術(shù)的實現(xiàn)。它與scikit-learn兼容,是scikit-learn-contrib項目的一部分。
9. FlashText
https://github/vi3k6i5/flashtext
如果您需要搜索某些文本并將其替換為其他內(nèi)容(如大多數(shù)數(shù)據(jù)清理工作),則通常將其轉(zhuǎn)為正則表達(dá)式。他們能很好地完成這項工作,但是有時會發(fā)生這樣的情況:需要搜索的數(shù)以千計的內(nèi)容,正則表達(dá)式可能會非常緩慢。
為此,F(xiàn)lashText是一個更好的選擇。它使整個操作的運行時間大大提高了。FlashText的優(yōu)點在于無論搜索條件有多少,運行時都是一樣的,而正則表達(dá)式中運行時幾乎是隨著條件數(shù)呈線性增長。
FlashText證明了算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計的重要性,即使對于簡單的問題,更好的算法也可以很容易地勝過最快的cpu運行簡單的實現(xiàn)。
10. Luminoth
https://luminoth.ai/
現(xiàn)在,圖像無處不在,理解它的內(nèi)容對于許多應(yīng)用程序來說至關(guān)重要。值得慶幸的是,由于DL的進(jìn)步,圖像處理技術(shù)已經(jīng)進(jìn)步了很多。
Luminoth是一個使用TensorFlow和Sonnet構(gòu)建的用于計算機視覺的開源Python工具包。目前,它可以支持以Faster R-CNN模型的形式進(jìn)行對象檢測。
但是Luminoth不僅是一個特定模型的實現(xiàn)。它是被構(gòu)建為模塊化和可擴展,所以可以直接定制現(xiàn)有的部分或者將其擴展為新的模型來處理不同的問題,盡可能多地復(fù)用代碼。它提供的工具可以輕松完成構(gòu)建DL模型所需的工程工作:將數(shù)據(jù)(在本例中為圖像)轉(zhuǎn)換合適的格式輸送到數(shù)據(jù)管道(TensorFlow的tfrecords)中,執(zhí)行數(shù)據(jù)增強,在一個或多個gpu上運行訓(xùn)練(使用大型數(shù)據(jù)集時必須進(jìn)行分布式培訓(xùn)),運行評估度量,輕松地在TensorBoard中可視化 并用簡單的API或瀏覽器界面部署訓(xùn)練號的模型,以便人們使用。
此外,Luminoth直接與Google Cloud的ML Engine集成,所以即使你沒有強大的GPU,也可以使用命令在云端進(jìn)行訓(xùn)練。
本文為編譯文章,轉(zhuǎn)載請注明出處。
來源:atyun_com
來源網(wǎng)址:http://atyun/13563_2017最流行的十大python庫.html
2018年最火的5大Python開源項目,總有適合你的! 公司視頻課程
前幾天看到一條新聞,說是高中生課程里面開設(shè)python課程了,這小孩子都來搶占市場了,這就是打了很多人的臉,特別是已經(jīng)畢業(yè)很多年或者正在學(xué)校的人,小孩子都作為標(biāo)準(zhǔn)的教材來學(xué)習(xí)了,作為過來人還有什么理由說學(xué)不好。讓自己做得多說的少最合適。
說到python現(xiàn)在處于風(fēng)口期,相對來說入門也比較容易。在人工智能以及大數(shù)據(jù)分析上都具備很強的特性。
Python語言易學(xué)易學(xué),高效開發(fā)。Python語言開發(fā)的開源項目非?;钴S。下面是五個最活躍的Python開源項目。
1)排名第一,當(dāng)然是關(guān)于機器學(xué)習(xí)谷歌開源項目tensorflow,TensorFlow是一個對數(shù)值計算的數(shù)據(jù)流圖,對開源項目的統(tǒng)計,這個項目被宣布與一百萬星和叉,被廣泛應(yīng)用于機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究。
2)第二個地方是python的新燒瓶。燒瓶是一個小型的Python Web開發(fā)框架。它是基于WSGI工具箱和jinja2模板引擎,它可以配置和開發(fā)Python網(wǎng)站最靈活快速的。
3。)第三的地方是在Python Web方向的經(jīng)典Django,和Django Web框架,采用m-v-t設(shè)計模式。在Django,由于控制器接受用戶輸入部分由框架本身的處理,所以Django編程更側(cè)重于模型(模型)、模板(模板)和視圖(視圖)。小編推薦一個學(xué)Python的學(xué)習(xí)裙【五八八,零九零,九四二】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進(jìn)步一起學(xué)習(xí)!裙內(nèi)有很多干貨和技術(shù)分享使用Django,我們可以快速創(chuàng)建高質(zhì)量、易維護(hù)、數(shù)據(jù)庫驅(qū)動的Web服務(wù)程序,特別是與學(xué)生建立數(shù)據(jù)庫的操作不是很熟悉,寶。
4)是Python的成熟,功能齊全的排在功能測試框架pytest pytest測試框架第四,可以幫助你更好的編寫自動化測試程序,它可以適應(yīng)全功能測試,集成測試復(fù)雜,從簡單的單元測試,以及眾多的支持插件開發(fā)。
5)在數(shù)據(jù)收集工具Scrapy排名第五,Scrapy是一個優(yōu)秀的數(shù)據(jù)網(wǎng)絡(luò)爬蟲框架,用戶只需要定制幾個模塊的開發(fā)可以實現(xiàn)完美的網(wǎng)絡(luò)爬蟲容易,使用它來抓取網(wǎng)頁內(nèi)容的數(shù)據(jù)和各種圖像文件等非常方便;Scrapy還提供各種履帶式基礎(chǔ)的類型,如basespider和站點;Scrapy被廣泛應(yīng)用于數(shù)據(jù)挖掘、網(wǎng)絡(luò)監(jiān)控和自動測試等。
以上排名是基于代碼提交和叉活動的排名,只反映了開源代碼的流行,企業(yè)市場應(yīng)用不熱,注意差異,你必須根據(jù)自己的需要選擇適合你的項目的python開源框架和工具。
不管你是懷著什么目的,求職加薪,或者是興趣。首先你得準(zhǔn)備吃苦的思想準(zhǔn)備。學(xué)編程語言是枯燥的,得持之以恒。如果學(xué)python都是從入門到放棄,那么學(xué)其它東西會更難。
還需要有些自學(xué)能力,出現(xiàn)問題,自己嘗試解決。多加練習(xí),在練習(xí)和不斷挫折中理解和掌握,熟能生巧。
不要急躁,真正能為你所用的技能,不是一朝一夕速成的。真正能被你吸收的養(yǎng)分,不是別人嚼爛了給你。你自己體會到的知識,才會被你吸收,在大腦里停留許久。
GitHub 上最火的 Python 開源項目 公司視頻課程
許多開發(fā)者都有定期瀏覽 GitHub 的習(xí)慣,對于 GitHub 上如此眾多的項目,有人不斷分享,有人不斷 Mark。每個人瀏覽的時候,都會注意到 Star 的數(shù)量,它代表著這個項目的熱度,今天,我們依照 Star 數(shù),盤點 GitHub 上Python 語言中最火的 15 個開源項目,希望對你有幫助,排名如下:
1
機器學(xué)習(xí)系統(tǒng) tensorflow
https://github/tensorflow/tensorflowStar 68481
Google 的 TensorFlow 是最流行的開源 AI 庫之一。它的高計算效率,豐富的開發(fā)資源使它被企業(yè)和個人開發(fā)者廣泛采用。TensorFlow 是一個采用數(shù)據(jù)流圖,用于數(shù)值計算的開源軟件庫。TensorFlow 最初由Google 大腦小組(隸屬于 Google 機器智能研究機構(gòu))的研究員和工程師們開發(fā)出來,用于機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,但這個系統(tǒng)的通用性使其也可廣泛用于其他計算領(lǐng)域。
2
oh-my-zsh
https://github/robbyrussell/oh-my-zshStar 58473
oh-my-zsh 是基于 zsh 的功能做了一個擴展,方便的插件管理、主題自定義,以及漂亮的自動完成效果。 Zsh 和 bash 一樣,是一種 Unix shell,但大多數(shù) Linux 發(fā)行版本都默認(rèn)使用 bash shell。但 Zsh 有強大的自動補全參數(shù)、文件名、等功能和強大的自定義配置功能。
3
命令行 HTTP 工具包 httpie
https://github/jakubroztocil/httpieStar 31248
HTTPie 是一個命令行 HTTP 客戶端,提供命令行交互方式來訪問 HTTP 服務(wù)。其目標(biāo)是使CLI 與 Web 服務(wù)的交互盡可能人性化。它提供了一個簡單的 http 命令,允許使用簡單自然的語法發(fā)送任意 HTTP 請求。
4
shell 命令行拓展 thefuck
https://github/nvbn/thefuckhttps://github/nvbn/thefuckStar 30532
首先這個項目的名字就很引人注目,取名為 thefuck 的原因是任何情況下你想說“我操”,你都可以用得到 thefuck。theFuck 是一個高可配置的應(yīng)用,用戶可以開啟或關(guān)閉規(guī)則、配置 UI、設(shè)置規(guī)則選項還有進(jìn)行其他的操作。Fuck 的 UI 很簡單,它允許用戶通過(上下)箭頭的方式在修正過的命令列表中進(jìn)行選擇,使用 Enter 來確認(rèn)選擇,Ctrl+C 來跳出程序。 不足的是在 Python 標(biāo)準(zhǔn)庫中沒有辦法在非 Windows 下不通過 curses 來讀取鍵盤輸入
5
微型 Python 框架 Flask
https://github/pallets/flaskStar 29399
Flask 是一個微型的 Python 開發(fā)的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask 使用 BSD 授權(quán)。 Flask 也被稱為“microframework”,因為它使用簡單的核心,用 extension 增加其他功能。Flask 沒有默認(rèn)使用的數(shù)據(jù)庫、窗體驗證工具。然而,F(xiàn)lask 保留了擴增的彈性,可以用 Flask-extension 加入這些功能:ORM、窗體驗證工具、文件上傳、各種開放式身份驗證技術(shù)。
6
Python Web 框架 Django
https://github/django/djangoStar 27899
Django 是 Python 編程語言驅(qū)動的一個開源模型-視圖-控制器(MVC)風(fēng)格的 Web 應(yīng)用程序框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV 模式。使用 Django,我們在幾分鐘之內(nèi)就可以創(chuàng)建高品質(zhì)、易維護(hù)、數(shù)據(jù)庫驅(qū)動的應(yīng)用程序。
7
jQuery-File-Upload
https://github/blueimp/jQuery-File-UploadStar 27398
jQuery File Upload 是一個 jQuery 圖片上傳組件,支持多文件上傳、取消、刪除,上傳前縮略圖預(yù)覽、列表顯示圖片大小,支持上傳進(jìn)度條顯示;支持各種動態(tài)語言開發(fā)的服務(wù)器端。
8
Python 的 HTTP 客戶端庫 requests
https://github/requests/requestsStar 27210
requests 是 Python 的一個 HTTP 客戶端庫,跟 urllib,urllib2 類似,那為什么要用 requests 而不用 urllib2 呢?以為 Python 的標(biāo)準(zhǔn)庫 urllib2 提供了大部分需要的 HTTP 功能,但是API太逆天了,一個簡單的功能就需要一大堆代碼??戳?requests 的文檔,確實很簡單,尤其適合懶人。
9
計算機系統(tǒng)配置管理器 ansible
https://github/ansible/ansibleStar 25132
Ansible 提供一種最簡單的方式用于發(fā)布、管理和編排計算機系統(tǒng)的工具,你可在數(shù)分鐘內(nèi)搞定。Ansible 是一個模型驅(qū)動的配置管理器,支持多節(jié)點發(fā)布、遠(yuǎn)程任務(wù)執(zhí)行。默認(rèn)使用 SSH 進(jìn)行遠(yuǎn)程連接。無需在被管理節(jié)點上安裝附加軟件,可使用各種編程語言進(jìn)行擴展。
10
Web 爬蟲框架 scrapy
https://github/scrapy/scrapyStar 22407
Scrapy 是 Python 開發(fā)的一個快速,高層次的屏幕抓取和 Web 抓取框架,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常之方便。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。
Scrapy 吸引人的地方在于它是一個框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如 BaseSpider、sitemap 爬蟲等。
11
Python 的機器學(xué)習(xí)項目 scikit-learn
https://github/scikit-learn/scikit-learnStar 20908
scikit-learn 是一個 Python 的機器學(xué)習(xí)項目。是一個簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具。基于 NumPy、SciPy 和 matplotlib 構(gòu)建。基于 BSD 源許可證。scikit-learn 的基本功能主要被分為六個部分,分類,回歸,聚類,數(shù)據(jù)降維,模型選擇,數(shù)據(jù)預(yù)處理。
12
神經(jīng)網(wǎng)絡(luò)庫 keras
https://github/fchollet/kerasStar 19132
Keras 是一個極簡的、高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,采用 Python(Python 2.7-3.5.)開發(fā),能夠運行在 TensorFlow 和 Theano 任一平臺,好項目旨在完成深度學(xué)習(xí)的快速開發(fā)。keras 的幾大特點:文檔齊全、上手快速、純 Python 編寫、關(guān)注度高更新迅速、論壇活躍、就是運行速度不太快,當(dāng)然,有的人就是不 care 速度。
13
Web 服務(wù)器 Tornado
https://github/tornadoweb/tornadoStar14178
Tornado 是使用 Python 開發(fā)的全棧式(full-stack)Web框架和異步網(wǎng)絡(luò)庫,最早由 Friendfeed 開發(fā)。通過使用非阻塞 IO,Tornado 可以處理數(shù)以萬計的開放連接,是 long polling、WebSockets 和其他需要為用戶維護(hù)長連接應(yīng)用的理想選擇。Tornado 跟其他主流的Web服務(wù)器框架(主要是 Python 框架)不同是采用 epoll 非阻塞 IO,響應(yīng)快速,可處理數(shù)千并發(fā)連接,特別適用用于實時的 Web 服務(wù)。
14
Python 解釋器 CPython
https://github/python/cpythonStar 12609
CPython 是用C語言實現(xiàn)的 Python 解釋器,也是官方的并且是最廣泛使用的Python解釋器。除了 CPython 以外,還有用 JAVA 實現(xiàn)的 Jython 和用 .NET 實現(xiàn)的 IronPython,使 Python 方便地和 JAVA 程序、.NET 程序集成。另外還有一些實驗性的 Python 解釋器比如 PyPy。
CPython 是使用字節(jié)碼的解釋器,任何程序源代碼在執(zhí)行之前先要編譯成字節(jié)碼。它還有和幾種其它語言(包括C語言)交互的外部函數(shù)接口。
工具包 CNTK
https://github/Microsoft/CNTKStar 12225
來自微軟公司的 CNTK 工具包的效率,“比我們所見過的都要瘋狂”。 這部分歸功于 CNTK 可借助圖形處理單元(GPU)的能力,微軟自稱是唯一公開“可擴展 GPU”功能的公司。(從單機上的 1 個、延伸至超算上的多個) 在與該公司的網(wǎng)絡(luò)化 GPU 系統(tǒng)(稱之為Azure GPU Lab)匹配之后,它將能夠訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)來識別語音,讓 Cortana 虛擬助理的速度達(dá)到以前的十倍。 去年 4 月的時候,CNTK 就已經(jīng)面向研究人員開放,只是當(dāng)時的開源授權(quán)限制頗多。不過現(xiàn)在,它已經(jīng)徹底開放了,而深度學(xué)習(xí)的初創(chuàng)者們將最為受益。
來自:開源中國
-end-
往期回顧:
iPhone8 下周出擊,嚇得我捂緊了我的腎!以后,在微信里管好自己的嘴,千萬別妄議!
做CIO難!做不踩“坑”的CIO更難!
Gartner發(fā)布技術(shù)成熟曲線:“你剛被人工智能洗腦,最聰明的錢已轉(zhuǎn)向這16項技術(shù)”
記一次驚心動魄的 DNS 緩存引發(fā)的慘案
發(fā)現(xiàn)·前沿 《海外風(fēng)向標(biāo)》 | 對話·精英 《CXO百腦匯》| 聚焦·行業(yè) 《早安,IDG》| 每周精彩內(nèi)容,盡在e行網(wǎng)。
10大Python開源項目推薦 推廣視頻課程
▌Rank 1:Requests-HTML v0.9(7385 stars on Github,來自Kenneth Reitz)
該庫旨在盡可能簡單直觀地解析 HTML,僅支持 Python 3.6。
項目地址:https://github/kennethreitz/requests-html
▌Rank 2:PyTest v3.5(2453 stars on Github,來自Pytest-dev)
該項目是一個可擴展的 Python 框架,可以輕松編寫小型測試,支持更復(fù)雜的功能測試。
項目地址:https://github/pytest-dev/pytest
▌Rank 3:Lector(327 stars on Github,來自BasioMeusPuga)
基于 Qt 的電子書閱讀器
項目地址:https://github/BasioMeusPuga/Lector
▌Rank 4:Asciinema v2.0(5491 stars on Github,來自Asciinema)
Python 編寫的終端會話錄制器。
項目地址:https://github/asciinema/asciinema
▌Rank 5:Snips-nlu v0.13(1416 stars on Github,來自Snips)
Snips-nlu 是一個 Python 庫,可以解析用自然語言編寫的句子并提取結(jié)構(gòu)化信息。
項目地址:https://github/snipsco/snips-nlu
▌Rank 6:Black(1665 stars on Github,來自ukasz Langa)
Python 代碼格式化工具庫。
項目地址:https://github/ambv/black
▌Rank 7:Instagram-terminal-news-feed(690 stars on Github,來自Bill Cheng)
Instagram Terminal Feed
項目地址:https://github/billcccheng/instagram-terminal-news-feed
▌Rank 8:Makesite(481 stars on Github,來自Sunaina Pai)
適合 Python 工程師的簡單、輕量級靜態(tài)網(wǎng)站/博客生成器。
項目地址:https://github/sunainapai/makesite
▌Rank 9:Twitter-scraper(832 stars on Github,來自Kenneth Reitz)
Python 寫的 Twitter 爬蟲工具,無 API 流速限制,非常高效,可輕松獲取任何用戶的推文。
項目地址:https://github/kennethreitz/twitter-scraper
▌Rank 10:Fast-Pandas(667 stars on Github,來自M. Mansour)
Pandas 是為數(shù)據(jù)科學(xué)家和開發(fā)人員提供的最靈活、最強大的工具之一。開發(fā)者可通過幾種方式執(zhí)行特定的任務(wù)。Fast-Pandas 旨在針對這些情況下的不同可用方法進(jìn)行基準(zhǔn)測試。此外,在 numpy 和 pandas 中都有專門的功能部分。
項目地址:https://github/mm-mansour/Fast-Pandas
原文地址:https://medium.mybridge.co/python-top-10-open-source-of-the-month-v-apr-2018-9e91343756a
2017年最流行的十大Python庫 行業(yè)視頻課程
年末是你需要思考過去一年的成就的時候。對于程序員來說,這通常是回顧今年發(fā)布的或者最近流行的開源庫,因為它們是解決特定問題的絕佳工具。
在過去的兩個多年中,我們都會在博客中選取我們認(rèn)為在Python社區(qū)最有用的庫。今年也是如此。
這一次,這份列表基本都是機器學(xué)習(xí)(ML)的庫。請非ML庫的作者而且能夠諒解,這都怪我們的偏見。希望在讀到本文的人能評論并提出一些被我們忽略的偉大的庫幫助我們矯正它。
那么,讓我們開始盤點吧!
1. Pipenv
鏈接:https://github/pypa/pipenv
我們?yōu)榻衲昴瓿醢l(fā)布的這個工具排到榜首,它有能力影響每個Python開發(fā)者的工作流程,它已經(jīng)成為Python管理依賴項的官方推薦工具。
https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv
Pipenv最初是由Kenneth Reitz創(chuàng)立的一個周末項目,旨在將其他包管理者(如npm或yarn)的創(chuàng)意帶入Python中。不再去安裝virtualenv,virtualenvwrapper,管理requirements.txt文件,并確保對依賴項的依賴版本的再現(xiàn)性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依賴關(guān)系(通常使用命令添加,刪除或更新依賴關(guān)系)。該工具可以生成一個Pipfile.lock文件,使你的構(gòu)建deterministic,幫助你避免那些因為你不知道是否需要的模糊依賴產(chǎn)生的難以捕捉的bug。
當(dāng)然,Pipenv還有很多其他的特性,并且它的文檔非常好,所以一定要看一下,并且在你所有的Python項目中使用它,就像我們在Tryolabs中做的那樣。
2. PyTorch
鏈接:http://pytorch.org/
說到今年流行,尤其是在深度學(xué)習(xí)(DL)社區(qū)流行的庫,那就要提到今年Facebook推出的DL框架PyTorch。
PyTorch構(gòu)建并改進(jìn)了流行的Torch框架,與Lua不同它是基于Python的。由于最近幾年人們大多轉(zhuǎn)向使用Python進(jìn)行數(shù)據(jù)科學(xué)研究,它是讓DL更容易接近的重要一步。
最值得注意的是,PyTorch已經(jīng)成為眾多研究人員的首選框架之一,因為它實現(xiàn)了動態(tài)計算圖(Dynamic Computational Graph)范式。當(dāng)使用TensorFlow,CNTK或MXNet等其他框架編寫代碼時,必須首先定義計算圖。該圖指定了我們的代碼運行的所有操作,這些操作稍后會被編譯并可能被框架優(yōu)化,以便能夠在GPU上并行運行得更快。這個范式被稱為靜態(tài)計算圖,因為你可以利用各種優(yōu)化,而且這個圖形一旦建成,就有可能運行在不同的設(shè)備上(因為執(zhí)行與構(gòu)建分離)。然而,在自然語言處理等許多任務(wù)中,工作的量通常是可變的:在將圖像提供給算法之前,可以將圖像調(diào)整為固定的分辨率,但不能對可變長度的句子進(jìn)行相同的處理。這是PyTorch和動態(tài)圖的亮點,通過在代碼中使用標(biāo)準(zhǔn)的Python控制指令,圖在執(zhí)行時被定義,給了你很多這對于一些任務(wù)來說必不可少的自由。
當(dāng)然,PyTorch也為你計算梯度(就像你期望從任何現(xiàn)代的DL框架中獲得的那樣),速度非???,而且是可擴展的,所以為什么不試試呢?
3. caffe2
鏈接:https://caffe2.ai/
這可能聽起來很瘋狂,但Facebook今年也發(fā)布了另一個很棒的DL框架。
原來的Caffe框架已被大眾使用多年,以無與倫比的性能和久經(jīng)考驗的代碼庫而聞名。然而,最近DL的趨勢使這個框架在某些方面停滯不前。Caffe2是將Caffe帶入“現(xiàn)代世界”的嘗試。
它支持分布式訓(xùn)練,部署(即使在移動平臺上),最新的CPU并且支持CUDA的硬件。雖然PyTorch可能更適合研究,但Caffe2適合在Facebook上看到的大規(guī)模部署。
另外,請看看近期的ONNX。你可以在PyTorch中構(gòu)建和訓(xùn)練模型,同時使用Caffe2進(jìn)行部署!
4. Pendulum
鏈接:https://github/sdispater/pendulum
去年,Arrow被列入榜單,它旨在通過使用Python的datetime讓你生活輕松一些。而今年,我們輪到Pendulum了。
Pendulum的優(yōu)點之一是它是Python標(biāo)準(zhǔn)datetime類嵌入式的替代品,因此可以輕松地將其與現(xiàn)有代碼集成,并且只有在實際需要時才使用它的功能。者已經(jīng)特別注意確保正確地處理時區(qū),默認(rèn)每個實例的timezone-aware和UTC。你也將得到一個擴展timedelta,使datetime算法更簡單。
與其他現(xiàn)有的庫不同,它努力使API具有可預(yù)測的行為,所以你知道會發(fā)生什么。如果你正在做任何與datetimes有關(guān)的重要工作,這會讓你更快樂!(查看更多:https://pendulum.eustace.io/docs/)。
5. Dash
https://plot.ly/products/dash/
如果你正在做數(shù)據(jù)科學(xué),你會使用Python生態(tài)系統(tǒng)中的優(yōu)秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,這對你和你的同事來說非常棒。但是,你如何與那些不知道如何使用這些工具的人分享這項工作呢?你如何建立一個界面,使人們可以輕松地使用數(shù)據(jù),可視化過程?過去,你需要一個前端團(tuán)隊,用Javascript知識來構(gòu)建這些GUI。但現(xiàn)在不用了。
今年宣布的Dash是一個用于構(gòu)建Web應(yīng)用程序的Python開源庫,尤其是那些充分利用數(shù)據(jù)可視化的Web應(yīng)用程序。它建立在Flask,Plotly.js和React的基礎(chǔ)上,并提供了抽象,使你不必學(xué)習(xí)這些框架,更高效的研發(fā)。這些應(yīng)用程序可以在瀏覽器中呈現(xiàn)并響應(yīng),因此在移動設(shè)備中也能使用。
了解更多關(guān)于Dash:https://plot.ly/dash/gallery
6.PyFlux
Python中有許多庫用來做數(shù)據(jù)科學(xué)和ML,但是當(dāng)你的數(shù)據(jù)點是隨著時間的推移而變化的度量(例如股票價格,從儀表中獲得的度量等等)時,這樣的庫就很少了。
PyFlux是一個專門為時間序列而開發(fā)的 Python開源庫。時間序列研究是統(tǒng)計學(xué)和計量經(jīng)濟(jì)學(xué)的一個分支,目標(biāo)可以描述時間序列的表現(xiàn)(依據(jù)隱藏組件或特征),也能預(yù)測時間序列未來的表現(xiàn)。
PyFlux允許用于時間序列建模的概率方法,并且已經(jīng)實現(xiàn)了幾個像GARCH這樣的現(xiàn)代時間序列模型。
7.Fire
https://github/google/python-fire
通常情況下,你需要為自己的項目制作命令行界面(CLI)。除了傳統(tǒng)的argparse,Python中還有click或docopt可用。谷歌今年宣布的Fire,在解決同樣的問題上提出了不同的方法。
Fire是一個開源的庫,可以為任何Python項目自動生成一個CLI。沒錯,是自動的:你幾乎不需要編寫任何代碼或文檔來構(gòu)建你的CLI!想完成你的CLI,只需要調(diào)用一個Fire方法并把它傳遞給一個CLI:一個函數(shù),一個對象,一個類,一個字典,甚至你可以不傳遞任何參數(shù)(這會將你的整個代碼轉(zhuǎn)換為一個CLI)。這個庫可以為你節(jié)省很多時間。
8.imbalanced-learn
https://github/scikit-learn-contrib/imbalanced-learn
在一個完美世界的里,我們會有完美平衡的數(shù)據(jù)集,我們將它們都拿來將訓(xùn)練模型,多么美好??上КF(xiàn)實世界不是這樣的,某些任務(wù)更傾向于不平衡的數(shù)據(jù)。例如,在預(yù)測信用卡交易中的欺詐行為時,你會預(yù)測絕大多數(shù)交易(+ 99.9%)實際上是合法的。如果我們簡單的訓(xùn)練ML算法會出現(xiàn)令人沮喪的性能,所以在處理這些類型的數(shù)據(jù)集時需要特別小心。
幸運的是,這是一個已經(jīng)被研究過的問題,存在各種各樣解決的技術(shù)。Imbalanced-learn是一個Python包,它提供了關(guān)于這些技術(shù)的實現(xiàn)。它與scikit-learn兼容,是scikit-learn-contrib項目的一部分。
9. FlashText
https://github/vi3k6i5/flashtext
如果您需要搜索某些文本并將其替換為其他內(nèi)容(如大多數(shù)數(shù)據(jù)清理工作),則通常將其轉(zhuǎn)為正則表達(dá)式。他們能很好地完成這項工作,但是有時會發(fā)生這樣的情況:需要搜索的數(shù)以千計的內(nèi)容,正則表達(dá)式可能會非常緩慢。
為此,F(xiàn)lashText是一個更好的選擇。它使整個操作的運行時間大大提高了。FlashText的優(yōu)點在于無論搜索條件有多少,運行時都是一樣的,而正則表達(dá)式中運行時幾乎是隨著條件數(shù)呈線性增長。
FlashText證明了算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計的重要性,即使對于簡單的問題,更好的算法也可以很容易地勝過最快的cpu運行簡單的實現(xiàn)。
10. Luminoth
https://luminoth.ai/
現(xiàn)在,圖像無處不在,理解它的內(nèi)容對于許多應(yīng)用程序來說至關(guān)重要。值得慶幸的是,由于DL的進(jìn)步,圖像處理技術(shù)已經(jīng)進(jìn)步了很多。
Luminoth是一個使用TensorFlow和Sonnet構(gòu)建的用于計算機視覺的開源Python工具包。目前,它可以支持以Faster R-CNN模型的形式進(jìn)行對象檢測。
但是Luminoth不僅是一個特定模型的實現(xiàn)。它是被構(gòu)建為模塊化和可擴展,所以可以直接定制現(xiàn)有的部分或者將其擴展為新的模型來處理不同的問題,盡可能多地復(fù)用代碼。它提供的工具可以輕松完成構(gòu)建DL模型所需的工程工作:將數(shù)據(jù)(在本例中為圖像)轉(zhuǎn)換合適的格式輸送到數(shù)據(jù)管道(TensorFlow的tfrecords)中,執(zhí)行數(shù)據(jù)增強,在一個或多個gpu上運行訓(xùn)練(使用大型數(shù)據(jù)集時必須進(jìn)行分布式培訓(xùn)),運行評估度量,輕松地在TensorBoard中可視化 并用簡單的API或瀏覽器界面部署訓(xùn)練號的模型,以便人們使用。
此外,Luminoth直接與Google Cloud的ML Engine集成,所以即使你沒有強大的GPU,也可以使用命令在云端進(jìn)行訓(xùn)練。
本文為編譯文章,轉(zhuǎn)載請注明出處。
來源:atyun_com
來源網(wǎng)址:http://atyun/13563_2017最流行的十大python庫.html