训练集 测试集 验证集_Python机器学习实战:划分训练集和检验集
機器學習實戰:這里沒有艱深晦澀的數學理論,我們將用簡單的案例和大量的示例代碼,向大家介紹機器學習的核心概念。我們的目標是教會大家用Python構建機器學習模型,解決現實世界的難題。
本文來自《數據黑客》,登錄官網可精彩資訊和文章。
數據黑客 - 專注金融大數據的內容聚合和數據聚合平臺?finquanthub.com1. 訓練集和檢驗集
在應用機器學習算法前,一般將數據集劃分為訓練集(training set)和檢驗集(test set),訓練集用于擬合模型,檢驗集用于評估預測能力。
機器學習模型往往包含很多參數,如果不使用檢驗集而是直接評估樣本內的預測精度,會受到過度擬合的影響。所謂過度擬合,就是模型找到了本來不存在的規律,利用檢驗集來校驗模型能規避這一點。
sklearn實現:train_test_split(X, y, test_size, random_state)
- X: 特征矩陣
- y: 目標向量
- test_size: 檢驗集大小(比例),通常選擇0.3,0.25,0.2等
- random_state: Numpy RandomState對象或代表隨機數種子的整數,由于劃分是隨機的,為了重復實驗過程,應該使用統一的隨機數種子。
使用IRIS數據集。
import # 先設置隨機數種子,目標是復現試驗結果2. 訓練/檢驗的缺陷
將數據集劃分為訓練集和檢驗集存在一個缺陷,即評估結果的不一致性。劃分過程通常是隨機的,給定不同的訓練樣本和測試樣本(例如調整隨機數種子)會得到不同的預測評分,每一個的檢驗集的精度評估都是模型真實預測能力的有偏估計,不能作為絕對的評估指標。
# 通過控制隨機數種子,獲得不同的(train,test)組合,分別擬合模型并計算檢驗集的預測評分3. 交叉驗證
為了克服訓練/檢驗劃分的缺陷,并得到模型預測能力更準確的評估,需要引入一個新的概念:K折交叉驗證。
什么是交叉驗證(cross-validation)?
給定樣本數據,劃分訓練集和檢驗集,在訓練集上訓練模型,在檢驗集上測試,然后不斷重復這個過程,得到多個預測評分,取預測評分的均值作為真實預測能力的無偏估計。
3.1 用迭代器實現
使用迭代器控制整個交叉驗證的過程,迭代器的主要功能是創建索引,即生成折數。
sklearn.model_selection模塊提供了很多迭代器,例如KFold, StratifiedKFold, LeaveOneOut等。
迭代器對象包含k個元素,每個元素都是長度為2的元組,元組的第一個元素包含訓練集的索引號,第二個元素包含檢驗集的索引號,利用這些索引號劃分訓練集和檢驗集。
from用10折交叉驗證檢驗一個簡單的模型,使用iris數據集。
from3.2 cross_val_score
用sklearn.model_selection.cross_val_score實現自動化交叉驗證。
cross_val_score()省略了交叉驗證的很多細節,如果提供了目標變量,在拆分樣本時每一折的目標變量的標簽所占的比例與y向量保持一致,即實現了分層抽樣。如果要使用方法1實現相同的結果,需要創建StratifiedKFold。
from 數據黑客 - 專注金融大數據的內容聚合和數據聚合平臺?finquanthub.com數據黑客:專注金融大數據,聚合全網最好的資訊和教程,提供開源數據接口。
我們聚合全網最優秀的資訊和教程:
我們提供開源數據接口:
總結
以上是生活随笔為你收集整理的训练集 测试集 验证集_Python机器学习实战:划分训练集和检验集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: golang interface 类型转
- 下一篇: java 异常_Java学习——异常与异