machine-learning
  • 機器學習:使用Python
    • 簡介Scikit-learn 機器學習
  • 分類法 Classification
    • Ex 1: Recognizing hand-written digits
    • EX 2: Normal and Shrinkage Linear Discriminant Analysis for classification
    • EX 3: Plot classification probability
    • EX 4: Classifier Comparison
    • EX 5: Linear and Quadratic Discriminant Analysis with confidence ellipsoid
  • 特徵選擇 Feature Selection
    • Ex 1: Pipeline Anova SVM
    • Ex 2: Recursive Feature Elimination
    • Ex 3: Recursive Feature Elimination with Cross-Validation
    • Ex 4: Feature Selection using SelectFromModel
    • Ex 5: Test with permutations the significance of a classification score
    • Ex 6: Univariate Feature Selection
    • Ex 7: Comparison of F-test and mutual information
  • 互分解 Cross Decomposition
  • 通用範例 General Examples
    • Ex 1: Plotting Cross-Validated Predictions
    • Ex 2: Concatenating multiple feature extraction methods
    • Ex 3: Isotonic Regression
    • Ex 4: Imputing missing values before building an estimator
    • Ex 5: ROC Curve with Visualization API
    • Ex 7: Face completion with a multi-output estimators
  • 群聚法 Clustering
    • EX 1: Feature_agglomeration.md
    • EX 2: Mean-shift 群聚法.md
    • EX 6: 以群聚法切割錢幣影像.md
    • EX 10:_K-means群聚法
    • EX 12: Spectral clustering for image segmentation
    • Plot Hierarchical Clustering Dendrogram
  • 支持向量機
    • EX 1:Non_linear_SVM.md
    • [EX 4: SVM_with _custom _kernel.md](SVM/EX4_SVM_with _custom _kernel.md)
  • 機器學習資料集 Datasets
    • Ex 1: The digits 手寫數字辨識
    • Ex 2: Plot randomly generated classification dataset 分類數據集
    • Ex 3: The iris 鳶尾花資料集
    • Ex 4: Plot randomly generated multilabel dataset 多標籤數據集
  • 應用範例 Application
    • 用特徵臉及SVM進行人臉辨識實例
    • 維基百科主要的特徵向量
    • 波士頓房地產雲端評估(一)
    • 波士頓房地產雲端評估(二)
  • 類神經網路 Neural_Networks
    • Ex 1: Visualization of MLP weights on MNIST
    • Ex 2: Restricted Boltzmann Machine features for digit classification
    • Ex 3: Compare Stochastic learning strategies for MLPClassifier
    • Ex 4: Varying regularization in Multi-layer Perceptron
  • 決策樹 Decision_trees
    • Ex 1: Decision Tree Regression
    • Ex 2: Multi-output Decision Tree Regression
    • Ex 3: Plot the decision surface of a decision tree on the iris dataset
    • Ex 4: Understanding the decision tree structure
  • 機器學習:使用 NVIDIA JetsonTX2
    • 從零開始
    • 讓 TX2 動起來
    • 安裝OpenCV
    • 安裝TensorFlow
  • 廣義線性模型 Generalized Linear Models
    • Ex 3: SGD: Maximum margin separating hyperplane
  • 模型選擇 Model Selection
    • Ex 3: Plotting Validation Curves
    • Ex 4: Underfitting vs. Overfitting
  • 半監督式分類法 Semi-Supervised Classification
    • Ex 3: Label Propagation digits: Demonstrating performance
    • Ex 4: Label Propagation digits active learning
    • Decision boundary of label propagation versus SVM on the Iris dataset
  • Ensemble_methods
    • IsolationForest example
  • Miscellaneous_examples
    • Multilabel classification
  • Nearest_Neighbors
    • Nearest Neighbors Classification
Powered by GitBook
On this page
  • Scikit-learn 套件的安裝
  • 開發介面及環境
  • 給機器學習的初學者
  1. 機器學習:使用Python

簡介Scikit-learn 機器學習

Previous機器學習:使用PythonNext分類法 Classification

Last updated 6 years ago

Scikit-learn 套件的安裝

目前Scikit-learn同時支援Python 2及 3,安裝的方式也非常多種。對於初學者,最建議的方式是直接下載 Anaconda Python ( Windows / OSX/ Linux 等作業系統。相關數據分析套件如Scipy, Numpy, 及圖形繪製庫 matplotlib, bokeh 會同時安裝。

開發介面及環境

筆者目前最常用的開發介面為IPython Notebook (3.0版後已改名為Jupyter Notebook) 以及 Atom.io 文字編輯器。在安裝Anaconda啟用IPython Notebook介面後,本文件連結之程式碼皆能夠以複製貼上的方式執行測試。目前部份章節也附有notebook格式文件 .ipynb檔可借下載。

給機器學習的初學者

              precision    recall  f1-score   support

           0       1.00      0.99      0.99        88
           1       0.99      0.97      0.98        91
           2       0.99      0.99      0.99        86
           3       0.98      0.87      0.92        91
           4       0.99      0.96      0.97        92
           5       0.95      0.97      0.96        91
           6       0.99      0.99      0.99        91
           7       0.96      0.99      0.97        89
           8       0.94      1.00      0.97        88
           9       0.93      0.98      0.95        92

 avg / total       0.97      0.97      0.97       899

本文件的目的並非探討機器學習的各項理論,我們將以應用範例著手來幫助學習。其中建議以手寫數字辨識來當成的敲門磚。而本文件中,有以下範例介紹手寫數字辨識,並且藉由這個應用來探討機器學習中的一個重要類別「監督式學習」。一開始,建議先從 ,來了解資料集的型態以及取得方式。接下來最重要的是釐清特徵X以及預測目標y之間的關係。要注意這邊的大寫的X通常代表一個矩陣, 每一列代表一筆資料,而每一行則代表其特徵。例如手寫數字辨識是利用 8x8的影像資料,來當成訓練集。而其中一種特徵的取用方法是例用這64個像素的灰階值來當成特徵。而小寫的y則代表一個向量,這個向量紀錄著前述訓練資料對應的「答案」。

了解資料集之後,接下來則建議先嘗試 例用最簡單的支持向量機(Support Vector Machine)分類法來達成多目標分類 (Multi-class classification),這裏的「多目標」指的是0到9的數字,該範例利用Scikit-learn內建的SVM分類器,來找出十個目標的分類公式,並介紹如何評估分類法的準確度,以及一些常見的分類指標。例如以下報表標示著對於10個數字的預測準確度。 有了對這個範例的初步認識之後,讀者應該開始感覺到監督式學習(Supervised learning)的意義,這裏「監督」的意思是,我們已經知道資料所對應的預測目標,也就是利用圖形可猜出數字。也就是訓練集中有y。而另一大類別「非監督式學習」則是我們一開始並不知道y,我們想透過演算法來將y找出來。例如透過購買行為及個人資料來分類消費族群。

而有了基本的分類法,接下來的範例則是利用特徵選擇來更增進分類的準確性。以手寫數字辨識來說。上述的例子共使用了64個像素來當成特徵,然而以常理來判斷。這64個像素中,處於影像邊緣的像素參考價值應該不高,因為手寫的筆畫鮮少出現在該處。若能將這些特徵資料排除在分類公式中,通常能再增進預測的準確度。而「特徵選擇」的這項技術,主要就是用來處理這類問題。則是利用了Scikit-learn內建的特徵消去法,來找出消去那些特徵能夠最佳化預測的準確度。而 則使用了更進階的交叉驗證法來切分訓練集以及挑戰集來評估準確程度。建議讀者可以嘗試這幾個範例,一步步去深入機器學習的核心。

機器學習資料集 Datasets
分類法範例一
特徵選擇範例二:Recursive Feature Elimination
特徵選擇範例三:Recursive Feature Elimination with Cross-Validation
https://www.continuum.io/downloads)。同時支援