【大厂AI课学习笔记NO.60】(13)模型泛化性的评价

我们学习了过拟合和欠拟合,具体见我的文章:https://giszz.blog.csdn.net/article/details/136440338

那么今天,我们来学习模型泛化性的评价。

泛化性的问题,我们也讨论过了,那么如何评价模型的泛化性呢?

 

我们知道,过拟合(over-fitting),就是在训练数据上表现良好,在未知数据上表现差。

欠拟合(under-fitting),就是在训练数据和未知数据上表现都很差。

这里要记住!

过和欠都不好,训练结合略微低于测试结果是组好的。 

 

这个图特别有助于我们的理解。

延伸学习:


模型泛化性的评价方法主要包括留出验证、交叉验证、自助法等,下面详细阐述留出验证和交叉验证这两种常用的方法,以及它们的步骤和重要的工具,并给出具体的例子来说明。

一、留出验证

留出验证是将数据集划分为训练集、验证集和测试集三个部分。训练集用于训练模型,验证集用于调整模型参数和选择最佳模型,测试集用于评估模型的泛化性能。

步骤:

  1. 将数据集按比例划分为训练集、验证集和测试集,通常的比例是70%:15%:15%或60%:20%:20%等。
  2. 使用训练集训练模型,并使用验证集进行模型选择和参数调整。
  3. 选择在验证集上表现最好的模型,使用测试集评估其泛化性能。

工具:

Python中的scikit-learn库提供了留出验证的相关功能,如train_test_split函数可用于划分数据集。

例子:

假设我们有一个包含1000个样本的数据集,我们可以使用train_test_split函数将其划分为训练集、验证集和测试集。例如,将70%的数据作为训练集,剩余的30%再平均分为验证集和测试集。

from sklearn.model_selection import train_test_split  X, y = # 数据集的特征和标签  X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)  
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

二、交叉验证

交叉验证是一种将数据集分成多份,每次使用其中的一份作为验证集,其余的作为训练集的验证方法。常见的交叉验证方法有k折交叉验证和留一交叉验证。

步骤(以k折交叉验证为例):

  1. 将数据集平均分成k份,每份称为一个折(fold)。
  2. 每次使用其中的一个折作为验证集,其余的k-1个折作为训练集。
  3. 重复k次,每次选择不同的折作为验证集,确保每个折都被用作验证集一次。
  4. 计算k次验证结果的平均值作为模型的性能评估指标。

工具:

Python中的scikit-learn库提供了交叉验证的相关功能,如KFoldcross_val_score等。

例子:

假设我们有一个包含100个样本的数据集,我们可以使用5折交叉验证来评估模型的性能。这意味着我们将数据集分成5份,每份包含20个样本。

from sklearn.model_selection import KFold, cross_val_score  
from sklearn.linear_model import LogisticRegression  X, y = # 数据集的特征和标签  
model = LogisticRegression()  # 以逻辑回归模型为例  kfold = KFold(n_splits=5, shuffle=True, random_state=42)  # 创建5折交叉验证对象  
scores = cross_val_score(model, X, y, cv=kfold)  # 使用交叉验证评估模型性能  print("交叉验证结果:", scores)  # 输出每次验证的结果  
print("平均性能:", scores.mean())  # 输出平均性能评估指标

需要注意的是,在实际应用中,我们通常会结合多种评估方法和工具来全面评估模型的泛化性能。此外,还需要注意数据集的划分比例、随机性等因素对评估结果的影响。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509319.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 常用的 UI 组件库之一:Vuetify组件库

Vuetify是一个基于Vue.js 的Material Design组件库,它提供了一套完整的、预构建的、可自定义的、响应式的组件,以便开发者可以快速构建美观且功能强大的Web应用程序。Vuetify遵循Material Design设计指南,提供了一系列易于使用的组件&#xf…

[项目设计] 从零实现的高并发内存池(二)

🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 ​ 目录 2.高并发内存池整体架构 3.ThreadCache实现 3.1 ThreadCache整体架构…

这是开玩笑吗?加个工具,WPS与Excel表格变成了应用系统

表格处理数据简单快捷,是个人用户的首选。然而,当企业长期使用,成本表、客户表、销售表等堆积如山,寻找所需表格如同大海捞针,稍有不慎便可能导致数据丢失、混乱。即便使用WPS和Excel这样的表格软件,处理大…

Harmony OS 父子组件传参

Harmony OS 父子组件传参案例 一、Prop:从父组件单向同步状态 类似于vue的prop传参,只能父组件传参给子组件 当点击父组件的按钮时,改变message值,参数跟着更新。并且子组件也跟着更新(前提是要子组件加上prop装饰器…

力扣hot100:1.两数之和

输入中可能存在重复值 。 分析&#xff1a; 本题需要返回的是数组下标&#xff0c;因此如果需要使用排序然后双指针的话&#xff0c;需要用到哈希表&#xff0c;但是由于输入中可能存在重复值&#xff0c;因此哈希表的value值必须是vector<int>。 使用双指针求目标值targ…

Ansible setup 模块 该模块主要用于收集信息,是通过调用facts组件来实现的。

目录 作用查看信息验证保存信息验证 作用 该模块主要用于收集信息&#xff0c;是通过调用facts组件来实现的。   facts组件是Ansible用于采集被管机器设备信息的一个功能&#xff0c;我们可以使用setup模块查机器的所有facts信息&#xff0c;可以使用filter来查看指定信息。…

【系统维护】-微软电脑管家官网

以前没注意&#xff0c;最近一次升级后给安装了微软电脑管家&#xff0c;特别是瘦身功能感觉比较好&#xff0c;以前总是装第三方或者用命令行情况&#xff0c;有时候不小心还会给系统搞崩溃。感觉这个会安全很多。 还有其他一些功能&#xff0c;建议感兴趣的的可以试一下&…

Axure导入使用ElementUI组件库

在使用Axure进行UI设计时&#xff0c;我们可能导入ElementUI组件库或者一些其他的元件库&#xff0c;其实非常简单&#xff0c;如果你还没有装好Axure可以先安装好AxureRP9汉化版&#xff0c;接下来&#xff0c;我们以AxureRP9汉化版来演示如何导入ElementUI组件库。 第一步&a…

CMake 生成器

关于 CMake 的讨论已有不少&#xff0c;因为 CMake 无疑是一个伟大的工具。如果你搜索“CMake”&#xff0c;你肯定会看到这样一句话&#xff1a;“CMake 不是一个构建系统&#xff0c;而是一个构建系统生成器”。因此&#xff0c;本篇文章的内容主要围绕什么是 CMake 生成器&a…

低代码开发平台优势揭秘 | 提升应用程序开发效率

低代码开发平台是指不用编码或少量编码即可快速产生应用程序的开发平台。依据平台的可视化开发方式&#xff0c;具有不同经验水准的开发者能通过图型操作面板、系统软件拖拽组件和模型驱动思维创建网页和移动应用程序。低代码开发平台在如今企业数字化的蓬勃发展中发挥着不可替…

【Leetcode每日一题】DP35 二维前缀和(难度⭐⭐)(26)

1. 题目解析 题目链接&#xff1a;DP35 【模板】二维前缀和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给二维区间数组元素和返回即可。 2. 算法原理 和上题了类似的方法&#xff0c;使用dp数组来保存[1…

智慧公厕:打造智慧城市的环卫明珠

在城市建设中&#xff0c;公共卫生设施的完善和智能化一直是重要环节。而智慧公厕作为智慧城市建设的重要组成部分&#xff0c;发挥着不可替代的作用。本文以智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案例现场实景实图&#xff0c;解读智慧公厕如何助力打…