27 個Python數(shù)據(jù)科學(xué)庫實(shí)戰(zhàn)案例 (附代碼)
為了大家能夠?qū)θ斯ぶ悄艹S玫?Python 庫有一個初步的了解,以選擇能夠滿足自己需求的庫進(jìn)行學(xué)習(xí),對目前較為常見的人工智能庫進(jìn)行簡要全面的介紹。


1、Numpy
NumPy(Numerical Python)
是?Python
的一個擴(kuò)展程序庫,支持大量的維度數(shù)組與矩陣運(yùn)算,此外也針對數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫,Numpy
底層使用C語言
編寫,數(shù)組中直接存儲對象,而不是存儲對象指針,所以其運(yùn)算效率遠(yuǎn)高于純Python代
碼。我們可以在示例中對比下純Python
與使用Numpy庫
在計算列表sin值的速度對比:import?numpy?as?np
從如下運(yùn)行結(jié)果,可以看到使用?Numpy
?庫的速度快于純 Python 編寫的代碼:
使用純Python用時0.017444372177124023s
使用Numpy用時0.001619577407836914s
OpenCV
?是一個的跨平臺計算機(jī)視覺庫,可以運(yùn)行在 Linux、Windows 和 Mac OS 操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時也提供了?Python
?接口,實(shí)現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。下面代碼嘗試使用一些簡單的濾鏡,包括圖片的平滑處理、高斯模糊等:

3、Scikit-image
scikit-image
是基于scipy
的圖像處理庫,它將圖片作為numpy
數(shù)組進(jìn)行處理。例如,可以利用scikit-image
改變圖片比例,scikit-image
提供了rescale
、resize
以及downscale_local_mean
等函數(shù)。

4、PIL
Python Imaging Library(PIL)
?已經(jīng)成為?Python
?事實(shí)上的圖像處理標(biāo)準(zhǔn)庫了,這是由于,PIL
?功能非常強(qiáng)大,但API卻非常簡單易用。但是由于PIL僅支持到?Python 2.7
,再加上年久失修,于是一群志愿者在?PIL
?的基礎(chǔ)上創(chuàng)建了兼容的版本,名字叫?Pillow
,支持最新?Python 3.x
,又加入了許多新特性,因此,我們可以跳過?PIL
,直接安裝使用?Pillow
。
5、Pillow
使用?Pillow
?生成字母驗(yàn)證碼圖片:

6、SimpleCV
SimpleCV
?是一個用于構(gòu)建計算機(jī)視覺應(yīng)用程序的開源框架。使用它,可以訪問高性能的計算機(jī)視覺庫,如 OpenCV,而不必首先了解位深度、文件格式、顏色空間、緩沖區(qū)管理、特征值或矩陣等術(shù)語。但其對于 Python3 的支持很差很差,在 Python3.7 中使用如下代碼:
會報如下錯誤,因此不建議在?Python3
?中使用:
7、Mahotas
Mahotas
?是一個快速計算機(jī)視覺算法庫,其構(gòu)建在?Numpy
?之上,目前擁有超過100種圖像處理和計算機(jī)視覺功能,并在不斷增長。使用?Mahotas
?加載圖像,并對像素進(jìn)行操作:

8、Ilastik
Ilastik
?能夠給用戶提供良好的基于機(jī)器學(xué)習(xí)的生物信息圖像分析服務(wù),利用機(jī)器學(xué)習(xí)算法,輕松地分割,分類,跟蹤和計數(shù)細(xì)胞或其他實(shí)驗(yàn)數(shù)據(jù)。大多數(shù)操作都是交互式的,并不需要機(jī)器學(xué)習(xí)專業(yè)知識。
9、Scikit-Learn
Scikit-learn
?是針對?Python
?編程語言的免費(fèi)軟件機(jī)器學(xué)習(xí)庫。它具有各種分類,回歸和聚類算法,包括支持向量機(jī),隨機(jī)森林,梯度提升,k均值和 DBSCAN 等多種機(jī)器學(xué)習(xí)算法。使用Scikit-learn
實(shí)現(xiàn)KMeans
算法:

10、SciPy
SciPy
?庫提供了許多用戶友好和高效的數(shù)值計算,如數(shù)值積分、插值、優(yōu)化、線性代數(shù)等。SciPy
?庫定義了許多數(shù)學(xué)物理的特殊函數(shù),包括橢圓函數(shù)、貝塞爾函數(shù)、伽馬函數(shù)、貝塔函數(shù)、超幾何函數(shù)、拋物線圓柱函數(shù)等等。

11、NLTK
NLTK
?是構(gòu)建Python程序以處理自然語言的庫。它為50多個語料庫和詞匯資源(如?WordNet
?)提供了易于使用的接口,以及一套用于分類、分詞、詞干、標(biāo)記、解析和語義推理的文本處理庫、工業(yè)級自然語言處理?(Natural Language Processing, NLP)
?庫的包裝器。NLTK被稱為?“a wonderful tool for teaching, and working in, computational linguistics using Python”
。

12、spaCy
spaCy
?是一個免費(fèi)的開源庫,用于?Python
?中的高級 NLP。它可以用于構(gòu)建處理大量文本的應(yīng)用程序;也可以用來構(gòu)建信息提取或自然語言理解系統(tǒng),或者對文本進(jìn)行預(yù)處理以進(jìn)行深度學(xué)習(xí)。
??
14、Pandas
Pandas
?是一個快速、強(qiáng)大、靈活且易于使用的開源數(shù)據(jù)分析和操作工具,?Pandas
?可以從各種文件格式比如 CSV、JSON、SQL、Microsoft Excel 導(dǎo)入數(shù)據(jù),可以對各種數(shù)據(jù)進(jìn)行運(yùn)算操作,比如歸并、再成形、選擇,還有數(shù)據(jù)清洗和數(shù)據(jù)加工特征。Pandas
?廣泛應(yīng)用在學(xué)術(shù)、金融、統(tǒng)計學(xué)等各個數(shù)據(jù)分析領(lǐng)域。??pandas進(jìn)階寶典

15、Matplotlib
Matplotlib
?是Python的繪圖庫,它提供了一整套和?matlab
?相似的命令 API,可以生成出版質(zhì)量級別的精美圖形,Matplotlib
?使繪圖變得非常簡單,在易用性和性能間取得了優(yōu)異的平衡。使用?Matplotlib
?繪制多曲線圖:

16、Seaborn
Seaborn
?是在?Matplotlib
?的基礎(chǔ)上進(jìn)行了更高級的API封裝的Python數(shù)據(jù)可視化庫,從而使得作圖更加容易,應(yīng)該把?Seaborn
?視為?Matplotlib
?的補(bǔ)充,而不是替代物。

17、Orange
Orange
?是一個開源的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件,提供了一系列的數(shù)據(jù)探索、可視化、預(yù)處理以及建模組件。Orange
?擁有漂亮直觀的交互式用戶界面,非常適合新手進(jìn)行探索性數(shù)據(jù)分析和可視化展示;同時高級用戶也可以將其作為?Python
?的一個編程模塊進(jìn)行數(shù)據(jù)操作和組件開發(fā)。使用?pip
?即可安裝?Orange
,好評~
安裝完成后,在命令行輸入?orange-canvas
?命令即可啟動?Orange
?圖形界面:
啟動完成后,即可看到?Orange
?圖形界面,進(jìn)行各種操作。

18、PyBrain
PyBrain
?是?Python
?的模塊化機(jī)器學(xué)習(xí)庫。它的目標(biāo)是為機(jī)器學(xué)習(xí)任務(wù)和各種預(yù)定義的環(huán)境提供靈活、易于使用且強(qiáng)大的算法來測試和比較算法。PyBrain
?是?Python-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library
?的縮寫。我們將利用一個簡單的例子來展示?PyBrain
?的用法,構(gòu)建一個多層感知器 (Multi Layer Perceptron, MLP)。首先,我們創(chuàng)建一個新的前饋網(wǎng)絡(luò)對象:
接下來,構(gòu)建輸入、隱藏和輸出層:
為了使用所構(gòu)建的層,必須將它們添加到網(wǎng)絡(luò)中:
可以添加多個輸入和輸出模塊。為了向前計算和反向誤差傳播,網(wǎng)絡(luò)必須知道哪些層是輸入、哪些層是輸出。這就需要明確確定它們應(yīng)該如何連接。為此,我們使用最常見的連接類型,全連接層,由 FullConnection 類實(shí)現(xiàn):
與層一樣,我們必須明確地將它們添加到網(wǎng)絡(luò)中:
所有元素現(xiàn)在都已準(zhǔn)備就位,最后,我們需要調(diào)用.sortModules()方法使MLP可用:
這個調(diào)用會執(zhí)行一些內(nèi)部初始化,這在使用網(wǎng)絡(luò)之前是必要的。
19、Milk
MILK(MACHINE LEARNING TOOLKIT)
?是 Python 語言的機(jī)器學(xué)習(xí)工具包。它主要是包含許多分類器比如 SVMS、K-NN、隨機(jī)森林以及決策樹中使用監(jiān)督分類法,它還可執(zhí)行特征選擇,可以形成不同的例如無監(jiān)督學(xué)習(xí)、密切關(guān)系傳播和由 MILK 支持的 K-means 聚類等分類系統(tǒng)。使用?MILK
?訓(xùn)練一個分類器:
20、TensorFlow
TensorFlow
?是一個端到端開源機(jī)器學(xué)習(xí)平臺。它擁有一個全面而靈活的生態(tài)系統(tǒng),一般可以將其分為 TensorFlow1.x 和 TensorFlow2.x,TensorFlow1.x 與 TensorFlow2.x 的主要區(qū)別在于 TF1.x 使用靜態(tài)圖而 TF2.x 使用Eager Mode動態(tài)圖。這里主要使用TensorFlow2.x作為示例,展示在 TensorFlow2.x 中構(gòu)建卷積神經(jīng)網(wǎng)絡(luò) (Convolutional Neural Network, CNN)。
21、PyTorch
PyTorch
?的前身是 Torch,其底層和 Torch 框架一樣,但是使用 Python 重新寫了很多內(nèi)容,不僅更加靈活,支持動態(tài)圖,而且提供了 Python 接口。
22、Theano
Theano
?是一個 Python 庫,它允許定義、優(yōu)化和有效地計算涉及多維數(shù)組的數(shù)學(xué)表達(dá)式,建在 NumPy 之上。在?Theano
?中實(shí)現(xiàn)計算雅可比矩陣:
23、Keras
Keras
?是一個用 Python 編寫的高級神經(jīng)網(wǎng)絡(luò) API,它能夠以 TensorFlow, CNTK, 或者 Theano 作為后端運(yùn)行。Keras 的開發(fā)重點(diǎn)是支持快速的實(shí)驗(yàn),能夠以最小的時延把想法轉(zhuǎn)換為實(shí)驗(yàn)結(jié)果。
24、Caffe
在 Caffe2 官方網(wǎng)站上,這樣說道:Caffe2
?現(xiàn)在是?PyTorch
?的一部分。雖然這些 api 將繼續(xù)工作,但鼓勵使用 PyTorch api。
25、MXNet
MXNet
?是一款設(shè)計為效率和靈活性的深度學(xué)習(xí)框架。它允許混合符號編程和命令式編程,從而最大限度提高效率和生產(chǎn)力。使用?MXNet
?構(gòu)建手寫數(shù)字識別模型:
26、Paddle
Paddle飛槳?(PaddlePaddle)
?以百度多年的深度學(xué)習(xí)技術(shù)研究和業(yè)務(wù)應(yīng)用為基礎(chǔ),集深度學(xué)習(xí)核心訓(xùn)練和推理框架、基礎(chǔ)模型庫、端到端開發(fā)套件、豐富的工具組件于一體。是中國首個自主研發(fā)、功能完備、開源開放的產(chǎn)業(yè)級深度學(xué)習(xí)平臺。使用?PaddlePaddle
?實(shí)現(xiàn)?LeNtet5
:
27、CNTK
CNTK(Cognitive Toolkit)
?是一個深度學(xué)習(xí)工具包,通過有向圖將神經(jīng)網(wǎng)絡(luò)描述為一系列計算步驟。在這個有向圖中,葉節(jié)點(diǎn)表示輸入值或網(wǎng)絡(luò)參數(shù),而其他節(jié)點(diǎn)表示對其輸入的矩陣運(yùn)算。CNTK
?可以輕松地實(shí)現(xiàn)和組合流行的模型類型,如?CNN
?等。CNTK
?用網(wǎng)絡(luò)描述語言?(network description language, NDL)
?描述一個神經(jīng)網(wǎng)絡(luò)。簡單的說,要描述輸入的 feature,輸入的 label,一些參數(shù),參數(shù)和輸入之間的計算關(guān)系,以及目標(biāo)節(jié)點(diǎn)是什么。
?
小編先前學(xué)習(xí)前端總結(jié)了許多資料,有python實(shí)戰(zhàn)案例、python300集視頻教程、電子書、游戲、源碼。在了解的過程里,也有c語言、c++、爬蟲、人工智能、JAVA以及web前端面試題等所有資料,需要可私免費(fèi)資料共享?。。?/span>

