機器學習進階 第一節 第九課
概述
一般在進行模型的測試是, 我們會將資料分為訓練集合測試集. 在給定的樣本空間中, 拿出大部分樣本作為訓練集來訓練模型, 剩餘的小部分樣本使用剛建立的模型進行預測.
訓練集與測試集
訓練集與測試集的分割可以使用 cross_validation 中的 train_test_split 方法. 大部分的交叉驗證迭代器都內建一個劃分資料前進行資料索引打散的選項, train_test_split 方法內部使用的就是交叉驗證迭代器. 預設不會進行打散, 包括設定 cv = some_integer (直接) k 摺疊交叉驗證的 cross_val_score 返回一個隨機的劃分. (如果資料具有時間性, 千萬不要打散資料在劃分)
sklearn.cross_validation.train_test_split
程式碼如下:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 例項化
li = load_iris()
# 注意返回值: 訓練集 train: x_train, y_train, 測試集 test: x_test, y_test
x_train, x_test, y_train, y_test = train_test_split(li.data, li.target, test_size=0.25)
# 除錯輸出
print("訓練集特徵值和目標值: ", x_train, y_train)
print("測試集特徵值和目標值: ", x_test, y_test)
上面的方法也有侷限. 應為只進行一次測試, 並不一定代表模型的真實準確率. 因為, 模型的準確率和資料的切分有關係, 在資料量不大的情況下, 影響尤其突出. 所以還是需要一個比較好的解決方案.
holdout method
評估模型泛化能力的典型方法是 holdout 交叉驗證 (holdout cross vaildation). holdout 方法很簡單, 我們只需要將袁術資料集分割為訓練集和測試集, 前者用於訓練模型, 後者用於評估模型的效能. 一般來說, Holdout 驗證並非一種交叉驗證, 因為資料並沒有交叉使用. 隨機從最初的樣本中選出部分, 形成交叉驗證資料, 而剩餘的就當做訓練資料. 一般來說, 少於原本樣本三分之一的資料被選做驗證資料, 所有這種方法得到的結果其實並不具有說服性.
k-折交叉驗證
K 折交叉驗證, 初始取樣分割成 K 個樣本, 一個單獨的子樣本被保留作為驗證模型的資料, 其他 K-1 個樣本用來訓練. 交叉驗證重複 K 次, 每個子樣本驗證異常, 平均 K 次的結果或者使用其它結合方式, 最終得到一個單一估測. 這個方法的優勢在於, 同時複用運用隨機產生的子樣本進行訓練和驗證, 每次的結果驗證一次, 10 折交叉驗證是最常用的.
例如 5 折交叉驗證, 全部可用資料集分成五個集合, 每次迭代都選用其中的 1 個集合資料作為驗證即, 另外 4 個集合作為訓練集, 經過 5 組的迭代過程, 交叉驗證的好處在於, 可以保證所有資料都有機會被訓練和驗證, 也盡最大可能讓優化的模型效能表現的更加可信.
使用交叉驗證的最簡單的方式是在估計器和資料集上使用 cross_val_score 函式.
sklearn.cross_validation.cross_val_score
程式碼如下:
from sklearn.cross_validation import cross_val_score
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
print(cross_val_score(lasso, X, y))
使用交叉驗證方法的目的主要有 2 個:
- 從有限的學習資料中獲取儘可能多的有效資訊
- 可以在一定程度上避免過擬合問題
estimator 的工作流程
在 sklearn 中, 估計器 (estimator) 是一個重要的角色, 分類器和迴歸都屬於 estimator. 在估計器中有兩個重要的方法是 fit 和 transform.
- fit 方法用於從訓練集中學習模型引數
- transform 用學習帶的引數轉換資料
相關文章
- 機器學習進階 第一節 第一課機器學習
- 機器學習進階 第一節 第七課機器學習
- 機器學習進階 第一節 第四課機器學習
- 機器學習進階 第一節 第十六課機器學習
- 機器學習 第五節 第九課機器學習
- 機器學習進階 第二節 第八課機器學習
- 機器學習 第六節 第二課機器學習
- 機器學習 第五節 第八課機器學習
- 【機器學習】第一節 - 基本概念機器學習
- 機器學習入門第一課:從高中課本談起機器學習
- 機器學習 | 吳恩達機器學習第九周學習筆記機器學習吳恩達筆記
- 機器學習30天進階實戰機器學習
- JAVA入門第三季第一章第九節課後練習題!Java
- 吳恩達機器學習第一課 Supervised Machine Learning Regression and Classification吳恩達機器學習Mac
- 10.15 見習後的第一節課
- 機器學習入門(三) — 迴歸模型(進階案例)機器學習模型
- 機器學習課程筆記機器學習筆記
- 機器學習 第一章學習機器學習
- python第一節課內容及練習Python
- 學習python第六節課Python
- 第一節課心得
- 《機器學習實戰》第一章 機器學習基礎機器學習
- 機器學習十講-第一講機器學習
- 李巨集毅機器學習課程筆記-1.機器學習概論機器學習筆記
- JavaScript 學習初篇(第一課)JavaScript
- Java學習第一階段Java
- 機器學習、深度學習、強化學習課程超級大列表!機器學習深度學習強化學習
- Python第一節學習筆記Python筆記
- Java進階容器學習Java
- .NET Core 第一節課 - 起源
- 你的容器化學習第一課
- 4、Pico Robot 感測器進階課程
- 林軒田機器學習基石課程學習筆記14 — Regularization機器學習筆記
- 林軒田機器學習基石課程學習筆記15 — Validation機器學習筆記
- 【機器學習】機器學習建立演算法第1篇:機器學習演算法課程定位、目標【附程式碼文件】機器學習演算法
- 吳恩達《構建機器學習專案》課程筆記(1)– 機器學習策略(上)吳恩達機器學習筆記
- 吳恩達《構建機器學習專案》課程筆記(2)– 機器學習策略(下)吳恩達機器學習筆記
- 10門必看的機器學習免費課程機器學習