Statistic Learning
Setting and Estimator
在訓練前,必須確保 data 的格式為 (n_samples, n_features)
例如以下為 iris dataset 的格式
共 150 筆訓練資料,每筆含 4 個 features
from sklearn import datasets
iris = datasets.load_iris()
data = iris.data
print(data.shape) # (150, 4)不是這個格式的話就要轉成該格式
例如 digits dataset 的格式不符合訓練格式
共 1797 筆訓練資料,每筆是個 8x8 圖案
試著把他轉成 (1797, 64)
digits = datasets.load_digits()
print(digits.images.shape) # (1797, 8, 8)
# =========補充 : 可以用以下方式來查看圖片=========
import matplotlib.pyplot as plt
plt.imshow(digits.images[0], cmap=plt.cm.gray_r)
plt.show()
# ===============================================
data = digits.images.reshape(digits.images.shape[0], -1)
print(data.shape) # (1797, 64)Estimators
scikit-learn 最關鍵的物件就是 Estimator
例如在 introduction 的 SVC
每種 estimator 都要有
fitmethod 來訓練 data或是給定 transformer 來從 raw data 中 extract/filter 一些 useful features
每種 estimator 都可以在定義時給予 hyperparameters
Supervised learning
k-Nearest neighbors classifier
訓練資料採用 iris dataset
首先將 iris 的 training data 分成 train 和 test 兩組
再來 import knn 的套件訓練 training data
更多的 Nearest Neighbors Documentation 可以查看官方文檔
Linear Regression
這裡用 diabetes dataset 實作 linear regression
該 dataset 共有 442 筆病人資料,每筆含 10 種 features
用 linear regrssion 方式學習
Classification
classification 比 linear regression 更適合用於 iris dataset
Exercise
用 digits dataset 的前 90 % 作為 training data
其餘作為 test data
然後用 kNN 和 classification 來試著 train & predict
SVM
SVM 提供了兩種算法
SVR (Support Vector Regression)
SVC (Support Vector Classification)
也能更改 kernel 類別
linear
svc = svm.SVC(kernel='linear')
poly (polynomial)
svc = svm.SVC(kernel='poly', degree=3)
rbf (radial basis function)
svc = svm.SVC(kernel='rbf')gamma: inverse of size of radial kernel
Scores
每個 estimator 都有一個 score 屬性能使用
越高代表 fit 的成果越好
Cross-Validation
Scikit-learn 提供了 k-fold cross validation 來讓評分更精準
實際應用時如下,就可以得到 n 組不同的評分
Unsupervised Learning
K-means Clustering
Last updated
Was this helpful?