Last Updated on 2021-03-26 by Clay
我一直希望能寫個關於 Scikit-Learn 種種模型及使用方法的筆記,故先在這裡開了坑,等到日後有機會便補上內容 (2020/03/21 更新,我開始筆記 Scikit-Learn 的各種教學了,如文章末)。
Scikit-Learn 基本上是用 CPU 訓練模型的,所以 Scikit-Learn 算是相當適合入門的機器學習框架:畢竟我們並不需要強大的 GPU 就可以用以訓練模型了!基本上我們可以說,只要我們手邊有任何一台可以用的電腦,那麼我們就可以使用 Scikit-Learn 訓練模型!
當然,還是受限於我們 CPU 的好壞影響訓練速度的。
若是你想要使用 GPU 進行更複雜的深度學習任務,可能你可以參考我之前所寫過的: [PyTorch 教學] Getting Start: 從 Tensor 設定開始。
目前感覺大宗的主流機器學習、深度學習都是使用 Python 語言架構的,Scikit-Learn 也不例外。這同時也代表著 Scikit-Learn 是相當容易上手、學習的。那麼,以下簡單筆記起 Scikit-Learn 的種類吧!也是我為了將來的心得筆記所作的一個 Overview。
簡單介紹 Scikit-Learn
Scikit-Learn為Python的一個開源的機器學習框架,其所能解決的問題如官網所提及的以著以下六個 (甚至不只) 面向:
Classification (分類)
- 確認我們檢測的目標屬於哪一種類別。
- 應用:垃圾郵件偵測、圖像識別
- 演算法:SVM (支援向量機)、Nearest neighbors (最近鄰居)、Random forest (隨機森林)
Regression (迴歸)
- 預測檢測資料的連續值屬性。
- 應用:Drug response (藥物反應)、Stock prices (股價)
- 演算法:SVR (支援向量迴歸)、Ridge regression (脊迴歸)、Lasso
Clustering (分群)
- 自動將資料分類成不同群集。
- 應用:Customer segmentation (客戶分類)、Grouping experiment outcomes (分組實驗結果)
- 演算法:K-Means、Spectral clustering、mean-shift
Dimensionality reduction (降維)
- 檢索我們所需考慮的隨機變數數量
- 應用:Visualization (視覺化)、Increased efficiency (提高效率)
Model selection (模型選擇)
- 比較、驗證各參數與模型
- 應用:通過調整參數提高精確度
- 模塊:Grid search (網格搜索)、Cross validation (交叉驗證)、Metrics (指標)
Preprocessing (前處理)
- 特徵提取與正規化
- 應用:Preprocessing (前處裡)、Feature extraction (特徵擷取)
資料集
現在許多的機器學習、深度學習框架都會提供可以容易調適的資料集,可以簡單地透過這些框架的 Package 使用 Python 語法匯入這些簡單的資料集。Scikit-Learn 也不例外: 它提供了各式各樣的小型玩具資料集(toy datasets)供使用者測試他們的各種模型。
例如以下這些:
- Boston house-prices
- Iris
- Diabetes
- Digits
- Linnerud
- Wine
- Breast cancer Wisconsin
不過使用這些資料集的同時,我們必須注意,由於這些資料過於輕量,並不能真正地取代現實世界中的資料。頂多頂多,就是用於練習調適模型、確認模型可以在這樣的資料中運作、並取得一定的效果。
接下來我將會整理不同的模型與資料集的應用,也將會繼續將Scikit-Learn的介紹教學系列繼續寫下去。
也可以參考 Scikit-Learn 官網所提供的演算法地圖: