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