Github12000+star的機(jī)器學(xué)習(xí)教程,理論、代碼、demo全有了
導(dǎo)讀:本文介紹的倉(cāng)庫(kù)包含用Python實(shí)現(xiàn)的流行的機(jī)器學(xué)習(xí)算法的示例,后面將解釋它們的數(shù)學(xué)原理。每個(gè)算法都有交互式Jupyter筆記本演示,允許你使用訓(xùn)練數(shù)據(jù)、算法配置和立即查看瀏覽器中的圖表并預(yù)測(cè)結(jié)果。
▲圖片來(lái)源:https://vas3k.ru/blog/machine_learning/
這個(gè)項(xiàng)目的目的不是讓大家通過(guò)使用第三方庫(kù)一行代碼實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,而是從零開始動(dòng)手實(shí)現(xiàn)這些算法,從而更好地理解每種算法背后的數(shù)學(xué)機(jī)制。這就是為什么所有的算法實(shí)現(xiàn)在這里都被稱為“homemade”,而不是單純?yōu)榱伺芡ㄋ惴ā?/span>
https://github.com/trekhleb/homemade-machine-learning#homemade-machine-learning
01 監(jiān)督學(xué)習(xí)
在監(jiān)督學(xué)習(xí)中,我們有一組訓(xùn)練數(shù)據(jù)作為輸入,每組訓(xùn)練集都有一組標(biāo)簽或“正確答案”作為輸出。然后我們訓(xùn)練我們的模型(機(jī)器學(xué)習(xí)算法參數(shù)),以便正確地將輸入映射到輸出(進(jìn)行正確的預(yù)測(cè))。最終目的是找到這樣的模型參數(shù),即使對(duì)于新的輸入示例,也可以成功地繼續(xù)正確的輸入→輸出映射(預(yù)測(cè))。
1. 回歸
在回歸問(wèn)題中,我們做了真正的價(jià)值預(yù)測(cè)。我們?cè)噲D沿著訓(xùn)練示例繪制線/平面/n維平面。
使用例子:股票價(jià)格預(yù)測(cè),銷售分析,數(shù)字依賴等。
-
Linear Regression 線性回歸
數(shù)學(xué) | 理論、鏈接及更多的閱讀資料
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression
代碼 | 實(shí)現(xiàn)示例
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/linear_regression/linear_regression.py
Demo | 單變量線性回歸:用GDP預(yù)測(cè)城市幸福指數(shù)
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/univariate_linear_regression_demo.ipynb
Demo | 多元線性回歸:用GDP和freedom index預(yù)測(cè)城市幸福指數(shù)
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/multivariate_linear_regression_demo.ipynb
Demo | 非線性回歸:用多項(xiàng)式和正弦特征的線性回歸預(yù)測(cè)非線性依賴關(guān)系
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/linear_regression/non_linear_regression_demo.ipynb
2. 分類
在分類問(wèn)題中,我們將輸入的例子按一定的特征進(jìn)行分割。
使用示例:垃圾郵件過(guò)濾、語(yǔ)言檢測(cè)、查找類似文檔、手寫字母識(shí)別等。
-
Logistic Regression 邏輯回歸
數(shù)學(xué) | 理論、鏈接及更多的閱讀資料
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression
代碼 | 實(shí)現(xiàn)示例
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/logistic_regression/logistic_regression.py
Demo | 邏輯回歸-線性邊界:基于花瓣長(zhǎng)度和花瓣寬度的鳶尾花類預(yù)測(cè)
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_linear_boundary_demo.ipynb
Demo | 邏輯回歸-非線性邊界:基于Param_1和Param_2的微芯片有效性預(yù)測(cè)
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/logistic_regression_with_non_linear_boundary_demo.ipynb
Demo | 多元邏輯回歸-MNIST:從28x28像素圖像中識(shí)別手寫數(shù)字
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_demo.ipynb
Demo | 多元邏輯回歸-Fashion MNIST:從28x28像素圖像中識(shí)別服裝類型
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/logistic_regression/multivariate_logistic_regression_fashion_demo.ipynb
02 無(wú)監(jiān)督學(xué)習(xí)
無(wú)監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一個(gè)分支,它從未被標(biāo)記、分類的數(shù)據(jù)中學(xué)習(xí)。無(wú)監(jiān)督學(xué)習(xí)不是對(duì)反饋?zhàn)龀鲰憫?yīng),而是根據(jù)每一新數(shù)據(jù)中是否存在此類共性來(lái)識(shí)別數(shù)據(jù)中的共性并作出反應(yīng)。
1. 聚類
在聚類問(wèn)題中,我們用未知特征分割訓(xùn)練實(shí)例。算法本身決定了用于分割的特征。
使用示例:市場(chǎng)分割、社交網(wǎng)絡(luò)分析、組織計(jì)算集群、天文數(shù)據(jù)分析、圖像壓縮等。
-
K-means Algorithm
數(shù)學(xué) | 理論、鏈接及更多的閱讀資料
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means
代碼 | 實(shí)現(xiàn)示例
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/k_means/k_means.py
Demo | 基于花瓣長(zhǎng)度和花瓣寬度將鳶尾花分割成簇clusters
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/k_means/k_means_demo.ipynb
2. 異常檢測(cè)
異常檢測(cè)是指通過(guò)與大多數(shù)數(shù)據(jù)顯著不同而引起懷疑的稀有項(xiàng)目、事件或觀測(cè)的識(shí)別。
使用示例:入侵檢測(cè)、欺詐檢測(cè)、系統(tǒng)運(yùn)行狀況監(jiān)視、從數(shù)據(jù)集中刪除異常數(shù)據(jù)等。
-
Anomaly Detection using Gaussian Distribution 基于高斯分布的異常檢測(cè)
數(shù)學(xué) | 理論、鏈接及更多的閱讀資料
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection
代碼 | 實(shí)現(xiàn)示例
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/anomaly_detection/gaussian_anomaly_detection.py
Demo | 在服務(wù)器操作參數(shù)(如延遲和閾值)中查找異常
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/anomaly_detection/anomaly_detection_gaussian_demo.ipynb
03 神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)本身不是一種算法,而是許多不同機(jī)器學(xué)習(xí)算法協(xié)同工作和處理復(fù)雜數(shù)據(jù)輸入的框架。
使用示例:作為所有其他算法的替代,應(yīng)用于圖像識(shí)別、語(yǔ)音識(shí)別、圖像處理(應(yīng)用特定風(fēng)格)、語(yǔ)言翻譯等。
-
Multilayer Perceptron (MLP) 多層感知機(jī)
數(shù)學(xué) | 理論、鏈接及更多的閱讀資料
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network
代碼 | 實(shí)現(xiàn)示例
https://github.com/trekhleb/homemade-machine-learning/blob/master/homemade/neural_network/multilayer_perceptron.py
Demo | 從28x28像素圖像中識(shí)別手寫數(shù)字
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_demo.ipynb
Demo | 從28x28像素圖像中識(shí)別衣服類型
https://nbviewer.jupyter.org/github/trekhleb/homemade-machine-learning/blob/master/notebooks/neural_network/multilayer_perceptron_fashion_demo.ipynb
04 機(jī)器學(xué)習(xí)地圖
1. Prerequisites
安裝Python:
確保你的機(jī)器上安裝了python。你可能希望使用venv標(biāo)準(zhǔn)python庫(kù)來(lái)創(chuàng)建虛擬環(huán)境,并從本地項(xiàng)目目錄安裝python、pip和所有依賴的包,以避免干擾系統(tǒng)范圍的包及其版本。
安裝 dependencies:
- pip install -r requirements.txt
2. Launching Jupyter Locally
項(xiàng)目中的所有演示都可以直接在瀏覽器中運(yùn)行,而無(wú)需在本地安裝jupyter。但是,如果你想在本地啟動(dòng)jupyter記事本,可以從項(xiàng)目的根文件夾運(yùn)行以下命令:
在此之后,jupyter筆記本將可由http://localhost:8888.訪問(wèn)。
3. Launching Jupyter Remotely
每個(gè)算法部分都包含到Jupyter NBViewer的演示鏈接。這是Jupyter筆記本的快速在線預(yù)覽器,你可以在瀏覽器中看到演示代碼、圖表和數(shù)據(jù),而無(wú)需在本地安裝任何內(nèi)容。如果你想改變代碼和實(shí)驗(yàn)演示筆記本,需要啟動(dòng)筆記本的活頁(yè)夾,只需單擊NBViewer右上角的“Execute on binder”鏈接即可完成此操作。
4. Datasets
可在數(shù)據(jù)文件夾中找到用于Jupyter筆記本演示的數(shù)據(jù)集列表:
https://github.com/trekhleb/homemade-machine-learning/blob/master/data