翻譯自 《Python學習手冊(第5版)》
Systems Programming
Python 對操作系統服務的內置接口使其非常適合編寫可移植、可維護的系統管理工具和實用程序 utilities (有時稱為 shell 工具)。Python 程序可以搜索文件和目錄樹、啟動其他程序、使用進程和線程進行並行處理等等。
Python 的標准庫帶有 POSIX 綁定和對所有常用 OS 工具的支持: 環境變量、文件、套接字、管道、進程、多線程、正則表達式模式匹配、命令行參數、標准流接口、shell 命令發射器、文件名擴展、zip 文件實用程序、XML 和 JSON 分析器、CSV 文件處理程序等。此外, Python 的大部分系統接口設計為可移植; 例如, 復制目錄樹的腳本通常在所有主要 Python 平台上運行不變。EVE Online 采用 Stackless Python 的實現並提供了針對多處理需求的高級解決方案。
GUIs (用戶圖形接口)
Python 的簡潔和快速周轉也使它成為桌面上圖形用戶界面編程的好匹配。python 附帶了一個標准面向對象的接口, 該 API 稱為 tkinter (tkinter 2.X), 它允許 Python 程序實現具有本地外觀和感覺的便攜式 gui。Python/tkinter gui 在 Windows、X Windows ( Unix 和 Linux ) 和 Mac os (經典版和 OS x) 上運行不變。一個免費的擴展包, PMW, 添加高級小部件到 tkinter 工具包。此外, 基於 c++ 庫的 wxPython GUI API 提供了一種在 Python 中構建便攜式 gui 的替代工具包。
更高級別的工具包 (如達博) 建立在基本 api (如 wxPython 和 tkinter) 之上。使用適當的庫, 您還可以在 Python 中的其他工具包中使用 GUI 支持, 例如 Qt 與 PyQt、具有 PyGTK 的 GTK、帶有 PyWin32 的 MFC、. NET 和 IronPython, 以及使用 Jython (2 章中描述的 Java 版本的 Python) 或 JPype 進行擺動。對於在 web 瀏覽器中運行或具有簡單接口要求的應用程序, Jython 和 Python web 框架和服務器端 CGI 腳本提供其他用戶界面選項。
Internet Scripting
python 附帶了標准的 Internet 模塊, 允許 python 程序在客戶端和服務器模式下執行各種網絡任務。腳本可以通過套接字進行通信;提取發送到服務器端 CGI 腳本的表單信息;通過 FTP 傳輸文件;分析和生成 XML 和 JSON 文檔;發送、接收、撰寫和分析郵件; 按 URL 獲取網頁;解析獲取的網頁的 HTML;通過 XML (RPC、SOAP 和 Telnet) 進行通信等等。Python 的庫使這些任務非常簡單。
不僅如此, Web 上還提供了大量的第三方工具, 用於 Python 中的 Internet 編程。例如, HTMLGen 系統生成基於 Python 類的描述的 HTML 文件, mod_python 包在 Apache web 服務器中高效運行 Python, 並支持服務器端模板化及其 Python 服務器頁面, 以及 Jython 系統提供無縫 Python/Java 集成, 並支持在客戶端上運行的服務器端小程序的編碼。
此外, 對於 python, 如 Django, TurboGears, web2py, Pylons, Zope 和 WebWare, 完整的 web 開發框架包支持使用 python 快速構建全功能和生產質量的網站。其中許多功能包括對象關系映射器、模型/視圖/控制器體系結構、服務器端腳本和模板以及 AJAX 支持, 以提供完整的企業級 web 開發解決方案。
最近, Python 已擴展到豐富的 Internet 應用程序 (RIAs), 其中包括 IronPython 中的 Silverlight 和 pyjs (也稱為睡衣 ( pyjamas)) 及其 Python 到 JavaScript 編譯器、AJAX 框架和小部件集。Python 還已遷移到雲計算、應用引擎以及前面的數據庫部分中描述的其他內容。在 Web 潛在客戶的位置, Python 很快就會跟隨。
Component Integration (組件集成)
Python 在 c 和 c++ 系統中擴展和嵌入的能力使其成為一種靈活的膠水語言, 用於編寫其他系統和組件的行為腳本。例如, 將 C 庫集成到 python 使 python 能夠測試和啟動庫的組件, 並在產品中嵌入 Python, 無需重新編譯整個產品 (或根本不發運其源代碼) 即可對現場自定義進行編碼。
諸如 SWIG 和 SIP 代碼生成器之類的工具可以自動完成將編譯的組件鏈接到 python 以便在腳本中使用所需的大部分工作, 而 Cython 系統允許程序員混合 python 和類似 C 的代碼。更大的框架, 如 Python 在 Windows 上的 COM 支持、基於 Jython Java 的實現和 IronPython。基於 .NET 的實現提供了腳本組件的其他方法。例如, 在 Windows 上, Python 腳本可以使用框架來編寫 Word 和 Excel 的腳本、訪問 Silverlight 等。
Database Programming
對於傳統的數據庫需求, 對於所有常用的關系數據庫系統 (Sybase、Oracle、Informix、ODBC、MySQL、PostgreSQL、SQLite 等) 都有 Python 接口。python 世界還定義了一個可移植數據庫 API, 用於從 Python 腳本訪問 SQL 數據庫系統, 在各種基礎數據庫系統上看起來相同。例如, 由於供應商接口實現了便攜式 API, 編寫用於與免費 MySQL 系統一起工作的腳本在其他系統 (如 Oracle) 上的工作基本不變;您通常需要做的就是更換基礎供應商界面。自2.5 以來, 進程內 SQLite 嵌入式 SQL 數據庫引擎是 Python 本身的標准部分, 支持原型設計和基本程序存儲需求。
在非 SQL 部分中, Python 的標准 pickle
模塊提供了一個簡單的對象持久化系統-它允許程序輕松地將整個 Python 對象保存和還原到文件和類似文件的對象。在 Web 上, 您還可以找到名為 ZODB 和 Durus 的第三方開源系統, 為 Python 腳本提供完整的面向對象的數據庫系統;其他, 如 SQLObject 和 SQLAlchemy, 實現對象關系映射器 (ORMs), 將 Python 的類模型移植到關系表上;PyMongo 是 MongoDB 的一個接口, 它是一種高性能、非 SQL、開放源碼的 JSON 樣式文檔數據庫, 它將數據存儲在結構非常類似於 python 自己的列表和字典中, 其文本可以使用 python 自己的標准庫 json 模塊進行分析和創建。
此外, 其他系統還提供了更專業的方法來存儲數據, 包括在 Google App 引擎中使用數據存儲, 通過 Python 類來建模和提供廣泛的可擴展性, 以及其他新興雲存儲選項, 如 Azure、PiCloud、OpenStack 和 Stackato。
Rapid Prototyping (快速原型)
對於 python 程序, 用 python 和 C 編寫的組件看起來是一樣的。因此, 最初可以在 Python 中原型系統, 然后將所選組件移動到編譯語言 (如 c 或 c++) 以進行傳遞。與某些原型工具不同, Python 在原型凝固后不需要完全重寫。不需要 C + + 等語言效率的系統部分可以保持在 Python 中編碼, 便於維護和使用。
Numeric and Scientific Programming
python 在數字編程中也被大量使用, 這是一種傳統上不被認為是腳本語言范圍的領域, 但已經發展成為 python 最引人注目的用例之一。這里突出的是, 前面提到的 Python 的 NumPy 高性能數字編程擴展包括諸如數組對象的高級工具、標准數學庫的接口等等。通過將 python 與以編譯語言編碼的數字例程集成為速度, NumPy 將 python 轉換為復雜而易於使用的數字編程工具, 通常可以替換傳統編譯語言 (如 FORTRAN 或 C++) 編寫的現有代碼。
Python 支持動畫、3D 可視化、並行處理等其他數字工具。例如, 流行的 SciPy 和 ScientificPython 擴展提供了更多的科學編程工具庫, 並將 NumPy 作為核心組件使用。Python 的 PyPy 實現也在數字領域中得到了牽引, 部分原因是此域中常見的排序的大量算法代碼可以在 PyPy 中快速運行, 通常速度快10X 到 100X。
Gaming, Images, Data Mining, Robots, Excel 等
Python 通常應用在更多的域中, 而不是可以在這里覆蓋。例如, 您將找到允許您使用 Python 執行以下操作的工具:
- 游戲編程和多媒體:pygame, cgkit, pyglet, PySoy, Panda3D, ...
- 通過 PySerial 擴展, 在 Windows、Linux 和更多端口上進行串口通信
- 使用 PyRo 工具包進行機器人控制編程
- 使用 NLTK 包進行自然語言分析
- 樹莓派 (Raspberry Pi) 和 Arduino 板上的儀器儀表工具
- 移動 (Mobile) 計算: Python 端口到谷歌 Android 和蘋果 iOS 平台
- Excel 電子表格功能和宏編程: PyXLL 或 DataNitro 加載項
- 媒體文件內容和元數據標簽處理 (Media file content and metadata tag processing): PyMedia, ID3, PIL/Pillow 等
- 人工智能: PyBrain 神經網絡庫和 Milk 機器學習工具包
- 專家系統: PyCLIPS, Pyke, Pyrolog, pyDatalog
- 網絡監視 (Network monitoring): zenoss, 使用 Python 進行編寫和自定義
- Python 腳本設計和建模: PythonCAD、PythonOCC、FreeCAD 和其他
- 文件處理和生成 (Document processing and generation): ReportLab, Sphinx, Cheetah, PyPDF 等等
- 使用 Mayavi、matplotlib、VTK、VPython 等進行數據可視化
- xml 分析: xml 庫包、xmlrpclib 模塊和第三方擴展
- JSON, CSV 文件處理:
json
andcsv
modules - 數據挖掘: 使用 Orange 框架、Pattern bundle、Scrapy 和自定義代碼
其他
Scikit-learn(重點推薦)
Scikit-learn 是基於 Scipy 為機器學習建造的的一個 Python 模塊,他的特色就是多樣化的分類,回歸和聚類的算法包括支持向量機,邏輯回歸,朴素貝葉斯分類器,隨機森林,Gradient Boosting,聚類算法和 DBSCAN。而且也設計出了 Python numerical 和 scientific libraries Numpy and Scipy
Keras(深度學習)
Keras 是基於 Theano, Tensorflow, CNTK 的一個深度學習框架,它的設計參考了 Torch,用 Python 語言編寫,是一個高度模塊化的神經網絡庫,支持 GPU 和 CPU。
Lasagne(深度學習)
不只是一個美味的意大利菜,也是一個和 Keras 有着相似功能的深度學習庫,但其在設計上與它們有些不同。
Pylearn2
Pylearn 是一個讓機器學習研究簡單化的基於 Theano 的庫程序。它把深度學習和人工智能研究許多常用的模型以及訓練算法封裝成一個單一的實驗包,如隨機梯度下降。
NuPIC
NuPIC 是一個以 HTM 學習算法為工具的機器智能平台。HTM 是皮層的精確計算方法。HTM 的核心是基於時間的持續學習算法和儲存和撤銷的時空模式。NuPIC 適合於各種各樣的問題,尤其是檢測異常和預測的流數據來源。
Nilearn
Nilearn 是一個能夠快速統計學習神經影像數據的 Python 模塊。它利用 Python 語言中的 scikit-learn 工具箱和一些進行預測建模,分類,解碼,連通性分析的應用程序來進行多元的統計。
PyBrain
Pybrain 是基於 Python 語言強化學習,人工智能,神經網絡庫的簡稱。 它的目標是提供靈活、容易使用並且強大的機器學習算法和進行各種各樣的預定義的環境中測試來比較你的算法。
Pattern
Pattern 是 Python 語言下的一個網絡挖掘模塊。它為數據挖掘,自然語言處理,網絡分析和機器學習提供工具。它支持向量空間模型、聚類、支持向量機和感知機並且用KNN分類法進行分類。
Fuel
Fuel 為你的機器學習模型提供數據。他有一個共享如MNIST, CIFAR-10 (圖片數據集), Google's One Billion Words (文字)這類數據集的接口。你使用他來通過很多種的方式來替代自己的數據。
Bob
Bob 是一個免費的信號處理和機器學習的工具。它的工具箱是用 Python 和 C++ 語言共同編寫的,它的設計目的是變得更加高效並且減少開發時間,它是由處理圖像工具,音頻和視頻處理、機器學習和模式識別的大量軟件包構成的。
Skdata
Skdata 是機器學習和統計的數據集的庫程序。這個模塊對於玩具問題,流行的計算機視覺和自然語言的數據集提供標准的Python語言的使用。
MILK
MILK 是Python語言下的機器學習工具包。它主要是在很多可得到的分類比如SVMS,K-NN,隨機森林,決策樹中使用監督分類法。 它還執行特征選擇。 這些分類器在許多方面相結合,可以形成不同的例如無監督學習、密切關系金傳播和由MILK支持的K-means聚類等分類系統。
IEPY
IEPY 是一個專注於關系抽取的開源性信息抽取工具。它主要針對的是需要對大型數據集進行信息提取的用戶和想要嘗試新的算法的科學家。
Quepy
Quepy 是通過改變自然語言問題從而在數據庫查詢語言中進行查詢的一個 Python 框架。他可以簡單的被定義為在自然語言和數據庫查詢中不同類型的問題。所以,你不用編碼就可以建立你自己的一個用自然語言進入你的數據庫的系統。
現在 Quepy 提供對於 Sparql 和 MQL 查詢語言的支持。並且計划將它延伸到其他的數據庫查詢語言。
Hebel
Hebel 是在 Python 語言中對於神經網絡的深度學習的一個庫程序,它使用的是通過 PyCUDA 來進行 GPU 和 CUDA 的加速。它是最重要的神經網絡模型的類型的工具而且能提供一些不同的活動函數的激活功能,例如動力,涅斯捷羅夫動力,信號丟失和停止法。
mlxtend
mlxtend 它是一個由有用的工具和日常數據科學任務的擴展組成的一個庫程序。
nolearn
nolearn 容納了大量能對你完成機器學習任務有幫助的實用程序模塊。其中大量的模塊和 scikit-learn 一起工作,其它的通常更有用。
Ramp
Ramp 是一個在 Python 語言下制定機器學習中加快原型設計的解決方案的庫程序。他是一個輕型的 pandas-based 機器學習中可插入的框架,它現存的Python語言下的機器學習和統計工具(比如scikit-learn,rpy2 等)Ramp 提供了一個簡單的聲明性語法探索功能從而能夠快速有效地實施算法和轉換。
Feature Forge
Feature Forge一系列工具通過與 scikit-learn 兼容的 API,來創建和測試機器學習功能。
這個庫程序提供了一組工具,它會讓你在許多機器學習程序使用中很受用。當你使用 scikit-learn 這個工具時,你會感覺到受到了很大的幫助。(雖然這只能在你有不同的算法時起作用。)
REP
REP 是以一種和諧、可再生的方式為指揮數據移動驅動所提供的一種環境。
它有一個統一的分類器包裝來提供各種各樣的操作,例如 TMVA, Sklearn, XGBoost, uBoost等等。並且它可以在一個群體以平行的方式訓練分類器。同時它也提供了一個交互式的情節。
Python 學習機器樣品
machine-learning-sample 用亞馬遜的機器學習建造的簡單軟件收集。
Python-ELM
Python-ELM 這是一個在 Python 語言下基於 scikit-learn 的極端學習機器的實現。
gensim
主題模型 python實現
- Scalable statistical semantics
- Analyze plain-text documents for semantic structure
- Retrieve semantically similar document