Contents
對於這個儲存庫的 octave / matlab 版本,請查看 machinelearning-octave 專案。
這個儲存庫包含使用 Python 實現流行機器學習演算法的範例,並解釋了其背後的數學原理。 每個演算法都有互動式的 Jupyter Notebook 示範,可以讓你玩訓練資料、演算法配置,並立即在瀏覽器中檢視結果、圖表和預測。 在大多數情況下,這些解釋都是基於 Andrew Ng 的這門偉大的機器學習課程。
這個儲存庫的目的不是通過使用第三方程式庫”一行程式”來實現機器學習演算法,而是從頭開始實踐這些演算法,並更好地理解每個演算法背後的數學原理。 這就是為什麼所有的演算法實現都被稱為”自制的 homemade “,而不是用於產品線。
監督式學習 ( Supervised Learning )
在監督式學習,我們有一組作為輸入的訓練資料和一組標籤或作為輸出的每個訓練集的”正確答案”。 然後我們訓練我們的模型(機器學習演算法參數)來正確地對映輸入到輸出(做正確的預測)。 最終的目的是找到這樣的模型參數,將成功地繼續正確的輸入→輸出對映(預測) ,甚至為新的輸入例子。
迴歸 Regression
在迴歸問題中,我們做真實值的預測。 基本上,我們嘗試沿著訓練樣本繪製一條線 / 平面 / n 維平面( line/plane/n-dimensional plane)。
使用範例: 股票價格預測,銷售分析,任何數字的相依等。
- 📗 Math | Linear Regression-進一步閱讀的理論及連結
- ⚙️ Code | Linear Regression-實現範例
- ▶️ Demo | 單變數線性迴歸 Univariate Linear Regression-使用 economy GDP 來預測城市快樂指數
- ▶️ Demo | 多變數線性迴歸 Multivariate Linear Regression-使用 economy GDP 和 freedom index 來預測城市快樂指數
- ▶️ Demo | 非線性迴歸 Non-linear Regression-使用線性迴歸多項式及正弦曲線特徵來預測非線性相關性
分類 Classification
在分類問題中,我們根據一定的特徵分割輸入範例。
使用範例: 垃圾郵件過濾器,語言偵測,尋找類似的文件,手寫字母識別等。
🤖 邏輯迴歸 Logistic Regression
- 📗 Math | Logistic Regressio-進一步閱讀的理論及連結
- ⚙️ Code | Logistic Regression-實現範例
- ▶️ Demo | Logistic Regression (Linear Boundary)-根據 petal_length 和petal_width 預測虹膜花類
- ▶️ Demo | Logistic Regression (Non-Linear Boundary)-基於param_1和param_2 預測微晶片有效性
- ▶️ Demo | Multivariate Logistic Regression | MNIST-識別 28×28 像素影像的手寫數字。
- ▶️ Demo | Multivariate Logistic Regression | Fashion MNIST-識別28×28像素影像的衣服類型。
非監督式學習 Unsupervised Learning
非監督式學習是機器學習的一個分支,它從未被標記、分類或分類的測試資料中學習。 非監督式學習不是對反饋做出反應,而是根據每個新資料中是否存在這些共同特性來識別資料中的共同性,並根據這些共同性的存在或不存在做出反應。
聚類 Clustering
在聚類問題中,我們根據未知特徵對訓練樣本進行分割。 由演算法本身決定用什麼特徵進行分割。
使用範例: 市場劃分分析,社群網路分析,組織運算聚類,天文資料分析,影像壓縮,等等。
🤖 K-means Algorithm
- 📗 Math | K-means Algorithm-進一步閱讀的理論及連結
- ⚙️ Code | K-means Algorithm-實現的範例
- ▶️ Demo | K-means Algorithm-根據 petal_length 和 petal_width 將虹膜花聚類
異常檢測 Anomaly Detection
異常檢測指的是識別那些引起懷疑的罕見物品、事件或觀察異常檢測,它們與大多數資料大相徑庭。
使用範例: 入侵偵測、詐欺偵測、系統健康監控、從資料集中刪除異常資料等。
🤖 利用高斯分佈 ( Gaussian Distribution ) 進行異常檢測
- 📗 Math | Anomaly Detection using Gaussian Distribution-進一步閱讀的理論及連結
- ⚙️ Code | Anomaly Detection using Gaussian Distribution-實現的範例
- ▶️ Demo | Anomaly Detection-尋找伺服器操作參數(如 latency 和 threshold)中的異常
神經網路 Neural Network (NN)
神經網路本身不是一個演算法,而是一個框架,將許多不同的機器學習演算法一起運作和處理複雜的資料輸入。
使用範例: 作為所有其它演算法的一般替代,影像辨識,語音辨識,影象處理(應用特定風格) ,語言翻譯等。
🤖 多層感知器 Multilayer Perceptron (MLP)
- 📗 Math | Multilayer Perceptron-進一步閱讀的理論及連結
- ⚙️ Code | Multilayer Perceptron-實現範例
- ▶️ Demo | Multilayer Perceptron | MNIST – 識別 28×28 像素影像的手寫數字。
- ▶️ Demo | Multilayer Perceptron | Fashion MNIST-識別28×28像素影像的衣服類型。
機器學習地圖

這張機器學習地圖的來源是這篇精彩的部落格文章
開始前的準備
確保在機器上安裝了 Python。
您可能希望使用 venv 標準的 Python 程式庫來建立虛擬環境,並從本地專案目錄中安裝和使用 Python、 pip 和所有相依套件服務,以避免搞亂系統範圍的套件及其版本。
安裝相依套件
通過執行以下命令安裝專案所需的所有依賴套件:
pip install -r requirements.txt
在本地端啟動 Jupyter
專案中的所有示範都可以直接在瀏覽器中執行,而不需要在本地安裝 Jupyter。 但是如果你想在本地啟動 Jupyter Notebook,你可以在專案的根資料夾中執行以下命令:
jupyter notebook
在這之後,你可以通過 http: / / localhost: 8888 訪問 Jupyter Notebook。
每個演算法部分包含到 Jupyter NBViewer 的示範連結。 這是一款快速的 Jupyter Notebooks 線上預覽器,你可以直接在瀏覽器中看到示範的程式碼、圖表和資料,而不需要在本地安裝任何東西。 如果你想改變程式碼和展示的筆記本實驗,你需要啟動在 Binder 的筆記本。 你可以簡單地點選 NBViewer 右上角的”Execute on Binder”連結。

資料集 Datasets
用於 Jupyter Notebook 演示的資料集列表可以在 data 資料夾中找到。
✍ 專案網址 https://github.com/trekhleb/homemade-machine-learning

相關線上課程/電子書/工具
🌳未來有跟這個專案的補充資訊會放到 Telegram Channel ,有興趣歡迎加入追蹤
你必須登入才能發表留言。