一名Python程序員會用哪些好用的工具?
在人工智能和數(shù)據(jù)科學(xué)領(lǐng)域,Python是最受歡迎的語言之一,近年來更是發(fā)展迅猛,也是各大編程語言榜單中的香餑餑。無疑,2018年將是人工智能和機(jī)器學(xué)習(xí)大熱的一年。同時,機(jī)器學(xué)習(xí)對用戶而言傾向于具有Python的風(fēng)格,因為它比Java更加友好。在數(shù)據(jù)科學(xué)方面,Python的語法與數(shù)學(xué)語法最為接近,因此成為了數(shù)學(xué)家或經(jīng)濟(jì)學(xué)家等專業(yè)人士最容易理解和學(xué)習(xí)的語言。
機(jī)器學(xué)習(xí)工具Shogun
Shogun是一個開源的機(jī)器學(xué)習(xí)工具箱,專注于支持向量機(jī)(SVM),它是用C ++編寫的,它是1999年創(chuàng)建的最古老的機(jī)器學(xué)習(xí)工具之一!它提供了廣泛的統(tǒng)一機(jī)器學(xué)習(xí)方法,其創(chuàng)建背后的目標(biāo)是為機(jī)器學(xué)習(xí)提供透明和可訪問的算法,并為任何對此領(lǐng)域感興趣的人提供免費的機(jī)器學(xué)習(xí)工具。
Shogun提供了一個記錄完備的Python界面,主要用于統(tǒng)一的大規(guī)模學(xué)習(xí),并提供高性能的速度。但是,有些人發(fā)現(xiàn)它的API很難使用。
Keras
Keras是一個高級神經(jīng)網(wǎng)絡(luò)API,提供了一個Python深度學(xué)習(xí)庫。對于任何初學(xué)者來說,這是機(jī)器學(xué)習(xí)的最佳選擇,因為與其他庫相比,它提供了一種表達(dá)神經(jīng)網(wǎng)絡(luò)的更簡單的方法。Keras是用Python編寫的,能夠在TensorFlow,CNTK或Theano等流行的神經(jīng)網(wǎng)絡(luò)框架之上運行。
據(jù)官方網(wǎng)站稱,Keras側(cè)重于4個主要指導(dǎo)原則,即用戶友好性,模塊化,易擴(kuò)展性和使用Python。然而,就速度而言,Keras與其他庫相比處于劣勢。
Scikit-Learn
這是一個用于數(shù)據(jù)挖掘和數(shù)據(jù)分析的開源工具。它也適用于數(shù)據(jù)科學(xué)。Scikit-Learn提供了一致且易于使用的API以及網(wǎng)格和隨機(jī)搜索。其主要優(yōu)勢之一是其在玩具數(shù)據(jù)集上執(zhí)行不同基準(zhǔn)的速度。Scikit-Learn的主要功能包括分類,回歸,聚類,降維,模型選擇和預(yù)處理。
Pattern
Pattern是一個Web挖掘模塊,為數(shù)據(jù)挖掘,自然語言處理,機(jī)器學(xué)習(xí),網(wǎng)絡(luò)分析和<canvas>可視化提供工具。它還附帶完善的文檔和超過50個示例以及超過350個單元測試。最重要的是,它是免費的!
Theano
可以說是最成熟的Python深度學(xué)習(xí)庫之一,Theano的主要功能包括與NumPy緊密集成,透明使用GPU,高效的符號差異化,速度和穩(wěn)定性優(yōu)化,動態(tài)C代碼生成以及廣泛的單元測試和自我驗證。
它提供了定義,優(yōu)化和評估數(shù)學(xué)表達(dá)式的工具,并且可以在Theano上構(gòu)建大量其他庫,以探索其數(shù)據(jù)結(jié)構(gòu)。盡管如此,與Theano合作時還是有一些缺點的;它的API可能會增加一些學(xué)習(xí)曲線,而另一些人則認(rèn)為Theano由于無法適應(yīng)生產(chǎn)環(huán)境而不像其他庫那樣高效。
數(shù)據(jù)科學(xué)工具SciPy
這是一個基于Python的數(shù)學(xué),科學(xué)和工程開源軟件生態(tài)系統(tǒng)。SciPy使用NumPy,IPython或Pandas等各種軟件包為常用的數(shù)學(xué)和科學(xué)編程任務(wù)提供庫。當(dāng)你想操縱計算機(jī)上的數(shù)字并顯示或發(fā)布結(jié)果時,此工具是一個很好的選擇,并且它也是免費的。
Dask
Dask是一款通過集成到其他社區(qū)項目(如NumPy,Pandas和Scikit-Learn)為分析提供并行性的工具。同樣,通過更改只有幾行代碼,可以快速對現(xiàn)有代碼進(jìn)行并行處理,因為它的DataFrame與Pandas庫中的相同,它的Array對象的工作方式類似于NumPy能夠并行化以純Python編寫的作業(yè)。
Numba
此工具是一種開源優(yōu)化編譯器,它使用LLVM編譯器基礎(chǔ)結(jié)構(gòu)將Python語法編譯為機(jī)器碼。在數(shù)據(jù)科學(xué)應(yīng)用中與Numba一起工作的主要優(yōu)勢在于它使用NumPy數(shù)組代碼的速度,因為Numba是一個支持NumPy的編譯器。就像Scikit-Learn一樣,Numba也適用于機(jī)器學(xué)習(xí)應(yīng)用,因為它的加速可以在特別為機(jī)器學(xué)習(xí)或數(shù)據(jù)科學(xué)應(yīng)用程序構(gòu)建的硬件上運行得更快。
HPAT
高性能分析工具包(HPAT)是一個基于編譯器的大數(shù)據(jù)框架。它可以自動將Python中的分析/機(jī)器學(xué)習(xí)代碼擴(kuò)展到裸機(jī)集群/云性能,并可以使用@jit裝飾器優(yōu)化特定功能。
Cython
使用數(shù)學(xué)密碼或密碼循環(huán)運行的代碼時,Cython是你的最佳選擇。Cython是一款基于Pyrex的源代碼翻譯器,可讓你輕松編寫Python的C擴(kuò)展。更重要的是,通過增加對與IPython / Jupyter筆記本集成的支持,與Cython一起編譯的代碼可以通過內(nèi)聯(lián)注釋在Jupyter筆記本中使用,就像任何其他Python代碼一樣。