读《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. Hinton:人类就是机器,绝妙的机器
  2. PE学习(十)第十章: 加载配置信息表
  3. 极速生成缩略图,Serverless 支撑赛事转播锁定冬奥亮点
  4. mysql导入数据load data infile用法整理
  5. JIURL文档-Linux的虚拟内存与分页机制(x86-64位)(一)
  6. 如何用c语言倒序输出字母,菜鸟求助-如何用指针法将一串字符按单词的倒序输出?如:i love yo...
  7. IBM连续20个季度营收下滑,但这可能是个好信号
  8. 排序算法之 插入排序
  9. ADS2020 Crack使用教程
  10. 记录一些比较常用的简单jsp模板
  11. 疯狂java 视频_疯狂Java讲义配书视频教程 下载
  12. teamtalk实现即时通讯
  13. 程序员的自我修养之数学基础10:超定方程的求解
  14. RAD Studio 10.3.1 cannot initialize object parameter of type..........“
  15. Caltech-UCSD Birds 200 (CUB) 数据库预处理
  16. 基于stm32f10x(原子)的电容触摸实验的个人解读 (16)
  17. 盒装Ubuntu着装绝妙,闪亮登场
  18. RuntimeError: Attempting to deserialize object on CUDA device 2 but torch.cuda.device_count() is 2.
  19. 《深入理解Android内核设计思想(第2版)(上下册)》之Android源码下载及编译...
  20. 基于遗传算法的配电网重构研究(Matlab代码实现)

热门文章

  1. android蓝牙广播自定义,Android 蓝牙相关的广播
  2. 想开发DAYU200,我教你
  3. 漏洞扫描工具 -- awvs13
  4. 三维动画--Blender软件介绍
  5. python运维开发工程师养成记(break语句)
  6. 华为平板可不可以更新鸿蒙,恭喜了,这37款华为支持升级鸿蒙,你的可以吗?...
  7. python-爬虫项目-微博抓取
  8. 神器!这个 Python 神器竟能把图片视频无损清晰放大N倍!
  9. 安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域
  10. salient object detection