读《python machine learning》chapt 6

Learning Best Practices for Model Evaluation and Hyperparameter Tuning

【主要内容】

(1)获得对模型评估的无偏估计

(2)诊断机器学习算法的常见问题

(3)调整机器学习模型

(4)使用不同的性能指标对评估预测模型

git源码地址 https://github.com/xuman-Amy/Model-evaluation-and-Hypamameter-tuning

【交叉验证 cross-validation】

常见的交叉验证方法holdout cv ,k-fold cv

【cross-validation ----holdout CV】

【主要思想】

将数据分为三部分:训练集(training data )、 验证集(validation data) 、 测试集(test data)

训练集(training data ):fit不同的模型

验证集(validation data):用于模型选择

测试集(test data):对于泛化到新数据的性能,能得到较小偏差的估计值

流程图:

【缺点】

性能评估对于如何划分训练集和验证集比较敏感,对于不同的数据样本得到的性能评估不同。

【cross-validation ----k-fold CV】

【主要思想】

将数据集无替换的随机分为K份,k-1份用来fit模型,剩下的一份用来性能评估。这样重复k次,得到K个模型和性能评估结果。

在得到K个性能评估后,计算平均性能评估。

另外,也可以找到泛华能力较好的最优参数。

找到这一参数后,在整个数据集上重新训练模型,再用独立的测试集得到最终的性能评估。

【K=10 的 流程图】

【stratified k-fold CV】

对于k-fold CV的一个改进时stratified k-fold CV,在每个训练集中保留了原始数据的类比例。

【sklearn实现 stratified k-fold cv】

# stratified k-fold cv
import numpy as np
from sklearn.model_selection import StratifiedKFold
Kfold = StratifiedKFold(n_splits = 10, random_state = 1).split(X_train, y_train)
scores = []
for k ,(train, test) in enumerate (Kfold):pipe_lr.fit(X_train[train], y_train[train])score = pipe_lr.score(X_train[test], y_train[test])scores.append(score)print('Fold: %2d, Class dist.: %s, Acc: %.3f' % (k+1, np.bincount(y_train[train]), score))print('\nCV accuracy: %.3f +/- %.3f' % (np.mean(scores), np.std(scores)))

sklearn 提供了k-fold cross-validation scorer, 可利用stratified k-fold cross-validation直接评估模型

from sklearn.model_selection import cross_val_score
scores  = cross_val_score(estimator = pipe_lr, X = X_train,y = y_train, cv = 10, n_jobs = 1)
print('CV accuracy scores:\n\n %s \n' % scores)
print('CV accuracy: %.3f +/- %.3f' % (np.mean(scores), np.std(scores)))

模型评估和超参数调整(二)——交叉验证 (cross validation)相关推荐

  1. 机器学习模型评估与超参数调优详解

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤  深圳大学,Datawhale高校群成员 机器学习分为两类 ...

  2. 训练数据集如何划分验证测试集?train/test(val/dev) set和交叉验证(cross validation)

    普通train/test set 直接将训练数据划分为两部分,一部分用来做训练train set,一部分用来固定作为测试集test set.然后反复更换超参在训练集上进行训练,使用测试集依次测试,进行 ...

  3. 【机器学习】<刘建平Pinard老师博客学习记录>交叉验证(Cross Validation)

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

  4. 交叉验证(Cross Validation)方法思想简介

    交叉验证(CrossValidation)方法思想 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(data ...

  5. CS231n课程笔记5.4:超参数的选择交叉验证

    CS231n简介 详见 CS231n课程笔记1:Introduction.  注:斜体字用于注明作者自己的思考,正确性未经过验证,欢迎指教. 1. 超参数有哪些 与超参数对应的是参数.参数是可以在模型 ...

  6. 交叉验证(Cross Validation)最详解

    1.OverFitting 在模型训练过程中,过拟合overfitting是非常常见的现象.所谓的overfitting,就是在训练集上表现很好,但是测试集上表现很差.为了减少过拟合,提高模型的泛化能 ...

  7. 交叉验证 cross validation 与 K-fold Cross Validation K折叠验证

    交叉验证,cross validation是机器学习中非常常见的验证模型鲁棒性的方法.其最主要原理是将数据集的一部分分离出来作为验证集,剩余的用于模型的训练,称为训练集.模型通过训练集来最优化其内部参 ...

  8. Sklearn——交叉验证(Cross Validation)

    文章目录 1.前言 2.非交叉验证实验 3.交叉验证实验 4.准确率与平方误差 4.1.准确率实验 4.2.均方误差实验 5.Learning curve 检查过拟合 5.1.加载必要模块 5.2.加 ...

  9. 交叉验证(Cross Validation)原理小结

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

最新文章

  1. opencv resize_树莓派监控摄像头python+picamera或openCV
  2. PHP中文字符串编码转换
  3. 模块怎么用_IC设计方法:模块划分与overdesign
  4. Pycharm上Django的使用 Day8
  5. [ASP.NET Core] Middleware
  6. vue.jsr入门_JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性
  7. 【APICloud系列|35】APICLloud开源官方模块
  8. Elastic-Job
  9. 9个元素换6次达到排序序列_全面讲解十大经典排序算法(Python实现)
  10. Android获取分辨率和像素密度
  11. python删除word表格中的某一行_python读取word 中指定位置的表格及表格数据
  12. python语言月份缩写_[宜配屋]听图阁
  13. python词语匹配相似度_python文本相似度计算
  14. php收短信,PHP飞信接收短信类
  15. 次时代游戏的制作流程以及游戏美术需要掌握哪些基本软件
  16. 常用URL分享,实用地址
  17. C语言安卓C4droid编程之whilefor循环,和break;
  18. 数制转换(二进制、十进制、十六进制转换)
  19. sqlserver嵌套查询失败问题
  20. 生鲜卖菜小程序怎么做

热门文章

  1. 计算机信息学口号,信息工程学院口号
  2. STM32通过串口通信(汇编)
  3. vue中Number方法将字符串转换为数字
  4. 初三物理光学知识点总结_初中物理光学知识点总结
  5. Django框架 1
  6. 刚体姿态及旋转的表示方法
  7. chrome插件开--开发心得
  8. Axiom3D学习日记 0.Axiom基础知识
  9. 推动居家养老与养老机构发展,智慧养老解决方案提供帮助
  10. 《程序员成长历程的四个阶段》