为什么要训练数据集与测试数据集?

  在上一篇博客主要学习了过拟合和欠拟合的概念。在后面的学习中慢慢就会发现机器学习中主要处理的是过拟合问题。

  现在我们仔细观察一下在上一篇博客最后得到的过拟合的曲线。


  我们说它之所以过拟合,是因为虽然我们学习到的这个曲线使得我们整个样本使用这个曲线进行预测的误差变小了,但是如果有一个新的样本的话,比如下图紫色的点对应的 xxx 坐标大概是 2.5 左右,那么根据我们的这个曲线预测的结果大概是 0.5 左右,显然可以发现这个预测的结果和之前蓝色的样本点相差太大。我们直观的就会觉得这个预测值很有可能是错误的。换句话说,在过拟合这种场景下,虽然这条曲线将原来的样本点拟合的非常好,总体的误差非常的小。但是一旦来了新的样本点,那么它就不能进行很好的预测了。


  在以上情况下,我们就称我们得到的这个模型的泛化能力是非常弱的。在这里所谓的泛化能力,就是所谓的由此及彼的能力。也就是说我们根据我们已知的这些训练数据得到的这条曲线,可是这条曲线在面对新的数据的时候它的能力却非常的弱,也就是泛化能力非常的差。

  到这里,就可以想象了。我们要训练这个模型目的不是最大程度的拟合这些点,而是为了可以获得一个可以预测的模型,当有了新的样本,新的数据的时候,我们的模型可以很好的给出解答。正因为如此,我们去衡量我们的这个模型对于训练的数据的拟合程度有多好是没有意义的。我们真正需要的是能够衡量我们得到的这个模型的泛化能力有多好

  那在这种情况下,我们应该怎么做呢?

  其实答案非常简单,这个做法我们之前也一直在使用,就是将原始的数据集分成训练数据集和测试数据集。而我们获得这个模型只使用训练数据集,而测试数据对于我们的模型来说就是全新的数据。


  如果我们训练数据获得的模型面对测试数据也能获得很好的结果的话。我们就说这个模型的泛化能力是很强的。因为它能通过训练数据得到的模型很好的给出测试数据这些新的数据相应的结果。但是如果这个模型面对测试数据,它的效果很差的话,那么这个模型的泛化能力就很弱。

  下面,我们就实际的来看一下对于我们的多项式回归来说,当我们的 degreedegreedegree 取不同的值的时候,我们通过训练数据获得的模型对于这个测试数据相应的预测的误差是怎样变化的?


具体实现

下面接着上一篇博客的 JupyterNotebookJupyter NotebookJupyterNotebook 接着写:


  我们在 NotebookNotebookNotebook 进行的实验是在实验模型的复杂度。对于多项式回归来说,相当于我们的 degreedegreedegree 越大,我们的模型就会越复杂。这种情况下通常我们的机器学习算法来说,是有这样的一个图的。


  对于测试数据集来说,模型越复杂,模型的准确率就越高。但是对于测试数据集来说,模型复杂度达到一定程度时,模型的准确率就又开始降低了。其实就是从欠拟合到合适再到过拟合的这个过程。其实我们真正要找的就是泛化能力最好的地方。换句话说,也就是对于我们的测试数据集来说模型的准确率最高的地方。


  具体代码见 42 过拟合和欠拟合.ipynb

43-为什么要训练数据集与测试数据集相关推荐

  1. Python机器学习:KNN算法03训练数据集,测试数据集train test split

    示例代码 首先引入相关包 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets import ...

  2. Python机器学习:多项式回归与模型泛化004为什么需要训练数据集和测试数据集

    泛化能力:由此及彼能力 遇见新的拟合能力差 数据 #数据 import numpy as np import matplotlib.pyplot as plt x = np.random.unifor ...

  3. [云炬python3玩转机器学习]4-3 训练数据集,测试数据集

    03 测试我们的算法 import numpy as np import matplotlib.pyplot as plt from sklearn import datasets iris = da ...

  4. 【pytorch】pytorch自定义训练vgg16和测试数据集 微调resnet18全连接层

    自己定义模型 测试: correct = 0total = 0for data in test_loader:img,label = dataoutputs = net(Variable(img))_ ...

  5. Python机器学习数据预处理:读取txt数据文件并切分为训练和测试数据集

    背景信息 在使用Python进行机器学习时,经常需要自己完成数据的预处理,本节主要实现对txt文本数据的读取,该文本满足如下要求: 每行为一条样本数据,包括特征值与标签,标签在最后 样本数据的特征值之 ...

  6. MMDetection(三):公开数据集上测试和训练模型

    MMDetection(三):公开数据集上测试和训练模型 1. 准备数据集 2. 测试数据集 2.1 举例 2.2 网络摄像头演示 2.3 测试图像和视频的同步接口 3. 训练模型 3.1 使用单个G ...

  7. 机器学习——线性回归与决策树实验(附效果以及完整代码)(数据集、测试集开源)

    机器学习实验 实验名称:实验一.线性回归与决策树 一.实验目的 (1)掌握线性回归算法和决策树算法 ID3 的原理: (2)学会线性回归算法和决策树算法 ID3 的实现和使用方法. 二.实验内容 本次 ...

  8. MMdetection3d环境搭建、使用MMdetection3d做3D目标检测训练自己的数据集、测试、可视化,以及常见的错误

    MMdetection3d环境搭建.使用MMdetection3d做3D目标检测训练自己的数据集.测试.可视化,以及常见的错误 1 mmdetection3d环境搭建与测试 1.1 从docker开始 ...

  9. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

最新文章

  1. fig r函数_R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1
  2. MySQL DATE_FORMAT() 函数
  3. centos 7 安装docker 并设置阿里云镜像仓库
  4. 每天一道LeetCode-----找到有多少个组合加起来和是n,每个组合的数字只能是1或者2
  5. 在适当的场合使用FlagsAttribute修饰枚举
  6. python 电脑文件变动提醒_Python整理文件方法,效率提升100倍-docx是什么文件
  7. c# sha1签名 微信_微信公众号开发——微信JSSDK使用(踩坑)
  8. 预付费电能表远传抄表系统
  9. http动态代理转socks5怎么获取?
  10. 继谷歌之后 雅虎退出中国音乐市场
  11. oracle的优化器有哪些,Oracle优化器有哪些优化方式?
  12. Word2010编号、多级列表、样式、图注的综合设置
  13. AERONET 儒略日公历相互转换
  14. 项目延期常见的原因及解决方法
  15. NDIS和Rndis区别
  16. 数据结构习题集作业代码(第一章)
  17. Linux之磁盘信息查看
  18. 【转载】面向对象编程的弊端是什么?
  19. 表情识别(二)--基于CNN分类
  20. 晕菜, silverlight !

热门文章

  1. 450g吐司烘烤温度_解决这24个问题,吐司面包想失败都难!
  2. Linux(5)账号和权限管理
  3. 在计算机内部 g的asc,在计算机内部,大写字母“G”的ASCⅡ码为“1000111”,大写字母“K”的ASCⅡ码为()。...
  4. C语言实验——逆置正整数 Time Limit: 1000 ms Memory Limit: 65536 KiB 1189
  5. 荣耀10的android版本区别,荣耀V10和一加5T哪款更值得买?一加手机5T与华为荣耀V10区别对比详细评测...
  6. 2022年度牛奶乳品行业数据:十大热门品牌销量排行榜
  7. 定位及优化SQL语句的性能问题
  8. 有了这些工具,可以助我工作效率起飞,强烈建议收藏!!
  9. python DES加解密实例(pyDes)
  10. 使用OBS双电脑直播(主副电脑)推流至哔哩哔哩