Machine Learning之Python篇(一)
Machine Learning之Python篇
概述
教程
《Python機器學習》中文版
東南大學某研究生的github,包含大量ML演算法示例。
上個哥們的DL示例
Python資料分析之武林祕籍。這裡包括了大量ML或DL的python工具包。
Chris Albon的個人主頁。包含大量ML/DL相關的note。
Chris Albon, UC Davis博士。在肯亞工作多年,援非的IT人。著有《Machine Learning with Python Cookbook: Practical Solutions from Preprocessing to Deep Learning》。
Chris Albon寫的ML卡片書。
一個python製作遊戲的示例庫,包括使用AI玩遊戲(DQN等)
上個作者的另一個python+AI+遊戲的程式碼庫
Python實現各種基礎演算法
Anaconda
Anaconda是一個科學計算方面的python發行版,下面提到的所有工具都可以通過Anaconda一站式安裝。
官網:
基本命令:
conda update --all
conda update conda
conda update anaconda
Anaconda同時也支援多個Python版本的並存和切換。它的底層用到了virtualenv。這個功能在Ubuntu下意義不太大,因為後者的apt工具已經維護好了2.x和3.x兩個分支,除非你想同時支援兩個不同的3.x分支。但在Windows下,由於包管理器的缺位,這個問題是很難解決的。
建立一個virtualenv:
conda create -n python2 python=2.7
這條命令會在Anaconda/envs下建立一個python2資料夾。
將命令列環境切換到該版本:
activate python2
參考:
Anaconda安裝更新庫
Python多版本切換工具-Pyenv\virtualenv及Anaconda科學計算環境的配置
Anaconda多環境多版本python配置指導
virtualenv
安裝:
pip3 install virtualenv
建立env:
virtualenv --no-site-packages venv
使用:
source venv/bin/activate
NumPy
NumPy是python語言所有數學計算庫的基礎。它主要提供了矩陣運算的功能。
官網:
教程:
API參考:
quickstart中文版:
檔案存取
原始二進位制檔案:tofile()和fromfile()
NumPy專用的格式檔案(.npy或.npz,它和原始二進位制檔案的區別在於:前者包含維度和型別資訊,而後者只有資料本身):save()和load()
文字檔案:savetxt()和loadtxt()
參考:
python:numpy(檔案存取)
資料型別轉換
型別轉換:c = b.astype(int)
把A型別看做B型別,比如將一個float64的數,看做8個單位元組的數:a.dtype = 'int8'
參考:
numpy資料型別dtype轉換
參考
從陣列到矩陣的跡,NumPy常見使用大總結
101 NumPy Exercises for Data Analysis。這裡包含了101個和numpy有關的問題,並附有答案。
用Python做影象處理(3)
numpy ndarray之內功心法,理解高維操作!
SciPy
SciPy提供了一些更高階的數學運算庫,比如:積分、插值、訊號處理、傅立葉變換、矩陣特徵值、統計計算等。
SciPy提供的功能主要仍侷限於數學運算,而並未提升到演算法的層面。這也是它和scikit-learn或其他高階庫的差別所在。
官網:
API參考:
Gaussian filter
w = 2int(truncatesigma + 0.5) + 1
參考:
Gaussian filter in scipy
Scikit-learn
Scikit-learn提供了常見的機器學習演算法的實現。
官網:
教程:
API參考:
中文文件:
Matplotlib
Matplotlib是一個高階的圖形庫,主要提供生成圖表等資料視覺化方面的功能。
官網:
API參考:
參考:
如何優雅而高效地使用Matplotlib實現資料視覺化
5種快速易用的Python Matplotlib資料視覺化方法
用Python做影象處理(2)
matplotlib–python的資料視覺化
Pandas
Pandas是一個數據分析方面的工具庫。它提供的Series(1-dimensional)和DataFrame(2-dimensional)資料結構,可以提供類似sql的資料操作和查詢的功能。
官網:
文件:
API參考:
參考:
十分鐘搞定pandas
Pandas和SQL的比較
一行程式碼,Pandas秒變分散式,快速處理TB級資料
淺談NumPy和Pandas庫
簡單實用的pandas技巧:如何將記憶體佔用降低90%
python科學計算之Pandas使用
23種Pandas核心操作,你需要過一遍嗎?
AI開發最大升級:Pandas與Scikit-Learn合併,新工作流程更簡單強大!
mysql
python操作mysql資料庫
chainer
chainer是一個日本公司Preferred Networks寫的基於python的深度學習框架。
官網:
程式碼:
Preferred Networks是日本目前最強的AI創業公司,估值已經超過20億美元。在工業機器人領域具有很強的實力。
它推出的PaintsChainer是一個給黑白線稿上色的App。
官網:
iPython
ipython是一個python的互動式 shell,比預設的python shell 好用得多,支援變數自動補全,自動縮排,支援 bash shell 命令,內建了許多很有用的功能和函式。
在較新的ipython版本中,添加了ipython notebook的功能,彌補了ipython shell下程式碼不易儲存等缺點,並且在使用–pylab inline選項後,可以在程式碼執行後立即顯示執行結果(包括圖片,資料表格等),因此在資料分析中運用十分廣泛。
sudo apt-get install ipython ipython-notebook
Jupyter
Jupyter是iPython的後繼專案,它不僅支援python語言,還支援其他50多種互動式語言。成為目前最流行的互動式shell和資料文字交換格式。
官網:
安裝:
pip install jupyter
執行:
jupyter notebook
參見:
Jupyter專案的前世今生
快速學習Jupyter Notebook
Jupyter中顯示matplotlib的圖片
Jupyter Notebook快速入門
TuShare
TuShare是一個免費、開源的python財經資料介面包。主要實現對股票等金融資料從資料採集、清洗加工 到 資料儲存的過程,能夠為金融分析人員提供快速、整潔、和多樣的便於分析的資料,為他們在資料獲取方面極大地減輕工作量,使他們更加專注於策略和模型的研究與實現上。
官網:
skimage
skimage相當於python版本的OpenCV。
官網:
參考:
Compute the HOG descriptor by skimage
Numba
NumPy的一個高速版本,能完成前者大部分的功能。
官網:
參考:
Python高效能運算庫——Numba
Face Recognition
這是一個人臉識別的軟體包。
程式碼:
參考:
3行Python程式碼完成人臉識別
Luminoth
Luminoth是一個開源的計算機視覺工具包,目前支援目標探測和影象分類,但以後會有更多的擴充套件。該工具包在TensorFlow和Sonnet上用Python搭建而成。
程式碼:
Tangent
Tangent是一個用於自動微分的源到源Python庫。
官網:
參考:
谷歌開源Tangent
PIL
PIL:Python Imaging Library,已經是Python平臺事實上的影象處理標準庫了。PIL功能非常強大,但API卻非常簡單易用。
官網:
安裝:
sudo apt install python-imaging
文件:
參考:
用Python做影象處理(1)
VisPy
VisPy可以算的上是Matplotlib的威力加強版,它添加了對GPU、3D和大資料的支援。
官網:
參考:
利用Python實現卷積神經網路的視覺化
Seaborn
Seaborn是另一個非常棒的Matplotlib的威力加強版,專注於統計繪圖,並可無縫對接Pandas庫。
官網:
參考:
資料視覺化詳解+程式碼演練
mlpy
mlpy是一個開源的ML庫。只是它最近的一次更新,已經是2012年的事情了。
官網:
Pyecharts
pyecharts是一個用於生成Echarts圖表的類庫。Echarts是百度開源的一個數據視覺化JS庫。
官網:
參考:
Pyecharts:極其強大的Python資料視覺化模組
ImageAI
ImageAI是一個CV方面的庫,集成了大量的DL模型,其目標是使用數十行程式碼完成一個CV任務。
程式碼: