1. 程式人生 > >Python快100倍?spaCy和Cython實現真正的企業級專案

Python快100倍?spaCy和Cython實現真正的企業級專案

Cython 是 Python 的超集,所以不要讓它嚇跑你!

你現在的 Python 程式已經是 Cython 程式。

有幾種情況下你可能需要加速,例如:

  • 你正在使用 Python 開發一個 NLP 的生產模組;
  • 你正在使用 Python 計算分析大型 NLP 資料集;
  • 你正在為深度學習框架,如 PyTorch /TensorFlow,預處理大型訓練集,或者你的深度學習批處理載入器中的處理邏輯過於繁重,這會降低訓練速度

長生劍:Numpy

Numpy 是 Python 提供數值計算的基礎模組,也是 Python 生態中歷史最為悠久的模組,可稱得上 “長生” 二字。如果沒有這柄長生劍,就沒有辦法做快速高效的向量化計算。它還提供了線性代數等高階矩陣運算功能,另外還能整合 C 的程式碼,讓你出劍更加的快。Python 的許多擴充套件模組都是基於 Numpy 開發的,所以學好 Numpy 就算是奠定好了根基。

碧玉刀:SciPy

SciPy 是基於 Numpy 開發的高階模組,它用於解決科學計算中的一些標準問題。例如數值積分和微分方程求解,擴充套件的矩陣計算,最優化,概率分佈和統計函式,甚至包括訊號處理。練習好碧玉刀和長生劍,就足以解決常見的計算問題,並不需要自己哼哧哼哧造輪子寫函數了。

孔雀翎:Matplotlib

孔雀的尾羽聚合了世間所有的色彩,做資料研究同樣需要漂亮的視覺化工具。Matplotlib 是 python 下最著名的繪相簿,提供了一整套和 Matlab 相似的 API,十分適合互動式繪圖。也可將它作為繪圖控制元件,嵌入各種應用程式中。在其基礎之上,還有更為有趣的繪圖工具 Seaborn 和 Bokeh。

多情環:Pandas

在資料整理階段,我們經常需要連線讀定不同型別的資料來源,處理不同格式的資料物件,如果只使用 Numpy 會很麻煩。Pandas 使 Python 具備了類似 R 的資料框物件。這樣方便用於真實江湖的資料處理和分析,它提供大量易用、高效的資料操作函式庫,能執行 join 以及其他 SQL 類似的功能來重塑資料,支援各種格式的輸入輸出資料。它與 Python 生態中的其它模組也有很好的整合,多情環名不虛傳。

離別鉤:Statsmodels

Statsmodels 是 python 中專門用於統計分析的模組,提供各種迴歸模型函式,包括廣義迴歸和穩健迴歸,還提供大量時間序列分析函式,例如 

ARIMA/VAR,各種經典假設檢驗和非引數方法一個都不少。有了離別鉤,你可以隨時和 R 說離別。

霸王槍:Scikit-learn

Scikit-learn 是非常著名的機器學習庫,它提供一個統一的介面來使用不同模型,有助於迅速地在資料集上應用流行的演算法。它包含了許多用於標準機器學習任務的工具,例如聚類、分類和迴歸等。不僅是各種演算法,機器學習中重要的特徵選擇和模型評估均在模組中包含了。值得一提的另一個模組 gensim:提供了詞向量、主題模型等函式。有了這兩種模組,天下就絕沒有不能解決的事。

一口箱子:TensorFlow

古龍並未寫完最後的第七種武器,通常會將《英雄無淚》中的一口箱子作為最為神祕最為強悍的終級武器。在 Python 生態中,一口箱子只能屬於 TensorFlow。它作為名門大派出品的深度學習框架,一出世就備受矚目。TensorFlow 提供了 C++ 和 python 兩種介面,讓你能高效的設計各種機器學習演算法,並且能執行在各類硬體架構之上。此外還有各種強力元件搭配,TensorBoard 用於監控學習過程中的各項引數,TensorServer 可用於生產環境的模型部署,甚至傳說還有 TPU 這種專門用於深度學習的晶片

在資料江湖中,沒有順手的武器,英雄亦束手加班中。七種武器雖強,但器物總是死的,更重要的是從器物的把玩中,能領悟到運用之妙,資料之道。一件武器是否能令讀者覺得神奇有價值,主要還是得看使用它的是什麼人。有赤兔的呂布沒有看到明天,沒有玄鐵重劍的楊過卻有更進一步的修煉。

江湖路遠,少俠們一路走好