機器學習常用框架
本文僅是我個人為了記錄在學習機器學習過程中使用的各個軟件工具,以便於有整體的理解
先轉載一個圖,我覺得概括的很好:
來源:https://blog.csdn.net/u014410989/article/details/89947128
Pandas
Pandas是一個強大的分析結構化數據的工具集;它的使用基礎是Numpy(提供高性能的矩陣運算);用於數據挖掘和數據分析,同時也提供數據清洗功能。
numpy
NumPy 是什么?
NumPy是使用Python進行科學計算的基礎軟件包。除其他外,它包括:
- 功能強大的N維數組對象。
- 精密廣播功能函數。
- 集成 C/C+和Fortran 代碼的工具。
- 強大的線性代數、傅立葉變換和隨機數功能。
來源:https://www.runoob.com/numpy/numpy-tutorial.html
NumPy 通常與 SciPy(Scientific Python)和 Matplotlib(繪圖庫)一起使用, 這種組合廣泛用於替代 MatLab,是一個強大的科學計算環境,有助於我們通過 Python 學習數據科學或者機器學習。
SciPy
來源:https://zh.wikipedia.org/wiki/SciPy
SciPy包含的模塊有最優化、線性代數、積分、插值、特殊函數、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學與工程中常用的計算。與其功能相類似的軟件還有MATLAB、GNU Octave和Scilab。
sklearn
SciKit learn的簡稱是SKlearn,是一個開源的python庫,專門用於機器學習、數據挖掘和數據分析的模塊。它建立在 NumPy ,SciPy 和 matplotlib 上。
來源:https://www.zhihu.com/question/53740695
Tensorflow和Caffe、MXNet等是針對深度學習特制的工具包,而Scikit-learn是對傳統的機器學習,包括預處理,特征工程,模型構建,驗證等的完整實現。這兩類工具壓根不是做同一件事的。
說實話,即使現在深度學習大行其道,很多時候你還是要用傳統機器學習方法解決問題的。首先不是每個人都有一個彪悍的電腦/服務器,其次,大多數問題真的不需要深度網絡。最后,只會調用工具包的程序員不是好的機器學習者。
caffe
來源:https://zh.wikipedia.org/wiki/Caffe
Convolutional Architecture for Fast Feature Embedding)是一個深度學習框架,最初開發於加利福尼亞大學伯克利分校。Caffe在BSD許可下開源,使用C++編寫,帶有Python接口[4][5]。
pyTorch
來源:https://zh.wikipedia.org/wiki/PyTorch
PyTorch是一個開源的Python機器學習庫,基於Torch[1][2][3],底層由C++實現,應用於人工智能領域,如自然語言處理。[4] 它最初由Facebook的人工智能研究團隊開發,[5][6][7]並且被用於Uber的概率編程軟件Pyro。[8]
PyTorch主要有兩大特征:[9]
PyTorch包括torch.nn、torch.optim等子模塊[12]。
tensorflow
TensorFlow™ 是一個采用數據流圖(data flow graphs),用於數值計算的開源軟件庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯系的多維數據數組,即張量(tensor)。它靈活的架構讓你可以在多種平台上展開計算,例如台式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。TensorFlow 最初由Google大腦小組(隸屬於Google機器智能研究機構)的研究員和工程師們開發出來,用於機器學習和深度神經網絡方面的研究,但這個系統的通用性使其也可廣泛用於其他計算領域。