当前位置: 首页 > article >正文

训练数据重复采样,让正负样本比例1:1

详细解释

  1. resample 函数

    • resample 函数来自 sklearn.utils,用于从数据集中重新抽样。
    • replace=True 表示允许重复抽样,即同一个样本可以被多次选中。
    • n_samples 指定抽样的数量。
  2. 确保训练集数量相同

    • 通过 resample 函数,你可以确保正训练集和负训练集的数量相同,即使其中一个集的数量小于另一个集的数量。
    • 如果 n_train_num 小于 max_train_numresample 会从 n_train 中随机选择 max_train_num 个样本,允许重复选择。

示例代码

假设你有一个包含正样本和负样本的列表,并且需要确保训练集中的正样本和负样本数量相同。以下是一个完整的示例代码:

import random
from sklearn.utils import resample# 假设 positive_ori 和 negative_ori 是包含正样本和负样本的列表
positive_ori = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
negative_ori = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]# 指定测试样本数量
p_test_num = 3
n_test_num = 3# 抽取测试集
p_test = random.sample(positive_ori, p_test_num)
n_test = random.sample(negative_ori, n_test_num)# 生成训练集
p_train = [item for item in positive_ori if item not in p_test]
n_train = [item for item in negative_ori if item not in n_test]# 计算训练集的最大数量
max_train_num = max(len(p_train), len(n_train))# 确保训练集数量相同
if len(p_train) < max_train_num:p_train = resample(p_train, replace=True, n_samples=max_train_num)
if len(n_train) < max_train_num:n_train = resample(n_train, replace=True, n_samples=max_train_num)# 打印结果
print("正测试集:", p_test)
print("正训练集:", p_train)
print("负测试集:", n_test)
print("负训练集:", n_train)

示例输出

假设 random.sample 抽取的元素如下:

  • p_test = [2, 5, 9]
  • n_test = [12, 15, 18]

则输出可能如下:

正测试集: [2, 5, 9]
正训练集: [1, 3, 4, 6, 7, 8, 10]
负测试集: [12, 15, 18]
负训练集: [11, 13, 14, 16, 17, 19, 20, 11, 13]

解释

  1. 抽取测试集

    • p_test 从 positive_ori 中随机抽取了 3 个元素 [2, 5, 9]
    • n_test 从 negative_ori 中随机抽取了 3 个元素 [12, 15, 18]
  2. 生成训练集

    • p_train 从 positive_ori 中移除了 p_test 中的元素,生成了 [1, 3, 4, 6, 7, 8, 10]
    • n_train 从 negative_ori 中移除了 n_test 中的元素,生成了 [11, 13, 14, 16, 17, 19, 20]
  3. 确保训练集数量相同

    • max_train_num 计算为 7(p_train 和 n_train 的长度都是 7)。
    • 由于 p_train 和 n_train 的长度已经相等,不需要重新抽样。
    • 如果 n_train 的长度小于 7,resample 会从 n_train 中随机选择 7 个样本,允许重复选择。

重复抽样的示例

假设 n_train 的长度小于 max_train_num,例如 n_train 只有 5 个元素:

import random
from sklearn.utils import resample# 假设 positive_ori 和 negative_ori 是包含正样本和负样本的列表
positive_ori = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
negative_ori = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]# 指定测试样本数量
p_test_num = 3
n_test_num = 5# 抽取测试集
p_test = random.sample(positive_ori, p_test_num)
n_test = random.sample(negative_ori, n_test_num)# 生成训练集
p_train = [item for item in positive_ori if item not in p_test]
n_train = [item for item in negative_ori if item not in n_test]# 计算训练集的最大数量
max_train_num = max(len(p_train), len(n_train))# 确保训练集数量相同
if len(p_train) < max_train_num:p_train = resample(p_train, replace=True, n_samples=max_train_num)
if len(n_train) < max_train_num:n_train = resample(n_train, replace=True, n_samples=max_train_num)# 打印结果
print("正测试集:", p_test)
print("正训练集:", p_train)
print("负测试集:", n_test)
print("负训练集:", n_train)

输出示例

假设 random.sample 抽取的元素如下:

  • p_test = [2, 5, 9]
  • n_test = [12, 15, 18, 19, 20]

则输出可能如下:

正测试集: [2, 5, 9]
正训练集: [1, 3, 4, 6, 7, 8, 10]
负测试集: [12, 15, 18, 19, 20]
负训练集: [11, 13, 14, 16, 17, 11, 13]

解释

  1. 抽取测试集

    • p_test 从 positive_ori 中随机抽取了 3 个元素 [2, 5, 9]
    • n_test 从 negative_ori 中随机抽取了 5 个元素 [12, 15, 18, 19, 20]
  2. 生成训练集

    • p_train 从 positive_ori 中移除了 p_test 中的元素,生成了 [1, 3, 4, 6, 7, 8, 10]
    • n_train 从 negative_ori 中移除了 n_test 中的元素,生成了 [11, 13, 14, 16, 17]
  3. 确保训练集数量相同

    • max_train_num 计算为 7(p_train 的长度是 7,n_train 的长度是 5)。
    • 由于 n_train 的长度小于 7,resample 会从 n_train 中随机选择 7 个样本,允许重复选择。因此,n_train 可能包含重复的元素,例如 [11, 13, 14, 16, 17, 11, 13]

总结

使用 resample 函数并设置 replace=True 可以确保在训练集数量不一致时,通过允许重复抽样来平衡训练集的数量。这在数据集不平衡的情况下非常有用,可以确保模型在训练时看到相同数量的正样本和负样本。

相关文章:

训练数据重复采样,让正负样本比例1:1

详细解释 resample 函数&#xff1a; resample 函数来自 sklearn.utils&#xff0c;用于从数据集中重新抽样。replaceTrue 表示允许重复抽样&#xff0c;即同一个样本可以被多次选中。n_samples 指定抽样的数量。 确保训练集数量相同&#xff1a; 通过 resample 函数&#xff…...

生活中的可靠性小案例12:类肤材质老化发粘问题

我一直觉得我买的某品牌车载吸尘器很好用&#xff0c;用了几年&#xff0c;目前性能也是杠杠的。然而它现在有个最大的问题&#xff0c;就是表面发粘了&#xff0c;用起来粘手&#xff0c;非常不舒服。 这一类问题在生活中不少见&#xff0c;尤其是一些用了类肤材质涂层的物件。…...

qt 自带虚拟键盘的编译使用记录

一、windows 下编译 使用vs 命令窗口&#xff0c;分别执行&#xff1a; qmake CONFIG"lang-en_GB lang-zh_CN" nmake nmake install 如果事先没有 指定需要使用的输入法语言就进行过编译&#xff0c;则需要先 执行 nmake distclean 清理后执行 qmake 才能生效。 …...

python中print函数的flush如何使用

在 Python 中&#xff0c;print 函数的 flush 参数是一个布尔值&#xff0c;默认值为 False。当设置为 True 时&#xff0c;它会强制将输出缓冲区的内容立即刷新到目标设备&#xff08;通常是控制台&#xff09;&#xff0c;而不是等待缓冲区满或者程序结束时才输出。 要注意fl…...

k8s集群-kubeadm init

为了使用阿里云的镜像源加速 kubeadm init 初始化 Kubernetes 集群的过程&#xff0c;你需要修改 kubeadm 的配置文件以指向阿里云提供的镜像仓库。以下是具体步骤&#xff1a; 1. 创建或编辑 kubeadm 配置文件 首先&#xff0c;创建一个 kubeadm 的配置文件&#xff08;如果还…...

【软考-架构】5.2、传输介质-通信方式-IP地址-子网划分

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 传输介质网线光纤无线信道 通信方式和交换方式会考&#xff1a;交换方式 &#x1f4af;考试真题第一题第二题 IP地址表示子网划分&#x1f4af;考试真题第一题第二题 传输…...

记一次OOM异常问题排查

背景 最近&#xff0c;有运维同事收到告警&#xff0c;提示服务器出现CPU占用100%的情况出现&#xff0c;并且严重影响服务性能&#xff0c;甚至导致一些功能不可用。接到上述情况反馈后&#xff0c;随即展开对问题的排查。 排查 CPU占用100%排查 定位进程&#xff1a;使用 t…...

websocket学习手册及python实现简单的聊天室

概述 WebSocket 是一种网络通信协议&#xff0c;允许在单个 TCP 连接上进行全双工通信。它最核心的优势就在于实现了持久连接&#xff0c;实现了实时的数据传输。HTTP 协议有一个很大的缺点&#xff0c;通信只能由客户端发起&#xff0c;服务器返回响应后连接就会关闭&#xf…...

SpringMVC (二)请求处理

目录 章节简介 一 请求处理&#xff08;初级&#xff09; eg:请求头 二 请求处理&#xff08;进阶&#xff09; eg:请求体 三 获取请求头 四 获取Cookie 五 级联封装 六 使用RequestBoby封装JSON对象 七 文件的上传 八 获取整个请求 HttpEntity 九 原生请求 Spring…...

Android (Kotlin) 高版本 DownloadManager 封装工具类,支持 APK 断点续传与自动安装

以下是一个针对 Android 高版本的 DownloadManager 封装工具类&#xff0c;支持 断点续传 和 自动安装 APK 功能。该工具类兼容 Android 10 及以上版本的文件存储策略&#xff0c;并适配了 FileProvider 和未知来源应用安装权限。 工具类&#xff1a;DownloadUtils import and…...

深入探索Android Bitmap:从原理到实战

一、Bitmap 是什么 在 Android 开发中,Bitmap 是极为重要的基石。简单来说,Bitmap 代表位图,是图片在内存里的具体呈现形式 ,任何诸如 JPEG、PNG、WEBP 等格式的图片,一旦被加载到内存中,就会以 Bitmap 对象的形式存在。从原理上看,Bitmap 本质是像素点的集合,若其宽度…...

​详细介绍 SetWindowPos() 函数

书籍&#xff1a;《Visual C 2017从入门到精通》的2.3.8 Win32控件编程 环境&#xff1a;visual studio 2022 内容&#xff1a;【例2.29】模态对话框 说明&#xff1a;以下内容大部分来自腾讯元宝。 ​1. 函数功能与用途 SetWindowPos() 是 Windows API 中用于动态调整窗口…...

1.6、Java继承、构造方法、数组

子类可以增加字段、增加方法或覆盖父类方法&#xff0c;但继承不会删除任何字段和方法不恰当认为super 同 this 引用是类似的概念&#xff0c;其实super不是一个对象的引用&#xff0c;不能将值super赋给另一个对象变量&#xff0c;super只是一个指示 编译器调用父类方法的特殊…...

通义万相 2.1 与蓝耘智算平台的深度协同,挖掘 AIGC 无限潜力并释放巨大未来价值

我的个人主页 我的专栏&#xff1a; 人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01; 点赞&#x1f44d;收藏❤ 引言&#xff1a;AIGC 浪潮下的新机遇 在当今数字化飞速发展的时代&#xff0c;人工智能生成内容&…...

Spring Boot项目中成功集成了JWT

JWT 原理解释 什么是 JWT&#xff1f; JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络应用环境间安全地将信息作为JSON对象传输。JWT通常用于身份验证和信息交换。 JWT 的结构 JWT由三部分组成&#xff…...

DeepSeek 3FS集群化部署临时笔记

DeepSeek 3FS集群化部署临时笔记 一、3FS集群化部署1、环境介绍2、对应的软件包安装3、编译4、部署4.1 部署monitor_collector_mainStep 2: Admin clientStep 3: Mgmtd serviceStep 4: Meta serviceStep 5: Storage serviceStep 6: Create admin user, storage targets and cha…...

专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...

原文链接&#xff1a;https://tecdat.cn/?p41020 本专题合集系统梳理了贝叶斯方法在金融数据分析与分类建模中的前沿应用。合集聚焦于PyMC3概率编程框架&#xff0c;深度探讨了共轭先验参数更新、贝叶斯逻辑回归、贝叶斯夏普比率等核心算法在实际场景中的落地实践&#xff08;…...

RocketMQ企业应用篇

在现代企业级应用中&#xff0c;分布式消息队列系统如RocketMQ发挥着至关重要的作用。本文将深入探讨RocketMQ在电商和物联网场景中的应用&#xff0c;结合实际案例和代码示例&#xff0c;展示如何利用RocketMQ解决企业级应用中的关键问题。 一、电商场景应用 1. 秒杀抢购解决…...

vue-常用指令 | 常用指令的修饰符

目录 什么是vue指令 v-cloak v-text v-html v-pre v-show /v-if v-else/v-else-if v-on v-bind v-for v-model 常用指令的修饰符 v-model 指令修饰符 事件修饰符 按键修饰符 什么是vue指令 指令就是带有 v- 前缀 的特殊 属性&#xff0c;不同的属性对应不…...

Git提交前时间检查

为了防止在本地看日志的时候&#xff0c;由于本地时间被修改&#xff0c;导致日志的时间存在非正确时间。通过以下脚本在提交前进行时间验证&#xff0c;只有是正确的时间才可以提交。 使用方法如下&#xff1a; 复制如下脚本&#xff0c;命名为 pre-commit &#xff0c;放到 …...

Linux调度器 --- 负载均衡的存在的问题

文章目录 前言一、简介二、Linux 调度器2.1 在单核系统上&#xff0c;CFS 非常简单2.2 在多核系统上&#xff0c;CFS 变得非常复杂2.2.1 负载均衡算法2.2.2 优化措施 三、Linux调度器负载均衡的存在的问题3.1 组负载不均衡问题&#xff08;Group Imbalance Bug&#xff09;3.2 …...

从零开始用AI开发游戏(三)背景故事

《迷域回响》背景故事 第一章&#xff1a;失落的符文纪元 在远古的“艾瑟兰”大陆&#xff0c;掌握空间魔法的「筑界者文明」曾建造了连通万界的回响迷宫——这座迷宫既是试炼场&#xff0c;也是囚笼。文明巅峰时期&#xff0c;筑界者将禁忌知识刻入虚空符文&#xff0c;嵌于…...

IXTUR气控永磁铁:以高精度气控和稳定磁场,为机器人应用提供稳定抓取力

在现代工业生产和物流领域&#xff0c;物料的抓取与搬运是影响生产效率和成本控制的重要环节。传统夹爪在面对不同材质、形状和重量的物体时&#xff0c;常常存在适应性差、抓取不稳定、操作复杂等问题&#xff0c;导致生产流程中频繁出现停机调整&#xff0c;增加了人工干预成…...

硬件驱动——51单片机:寄存器、LED、动态数码管

目录 一、51单片机 1.寄存器 二、LED点灯 1.原理 2.封装函数 3.顺序点灯 4.特定位点灯 三、动态数码管 1.原理 2.封装函数 3.0~9跳变 4.顺序移位0~9跳变 一、51单片机 1.寄存器 51单片机共40个引脚&#xff0c;其中P0,P1,P2,P3是四个有8引脚的寄存器&#xff0…...

2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会

自 2023 年首届香港 Web3 嘉年华成功举办以来&#xff0c;这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日&#xff0c;第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…...

【MySQL】多表查询(笛卡尔积现象,联合查询、内连接、左外连接、右外连接、子查询)-通过练习快速掌握法

在DQL的基础查询中&#xff0c;我们已经学过了多表查询的一种&#xff1a;联合查询&#xff08;union&#xff09;。本文我们将系统的讲解多表查询。 笛卡尔积现象 首先&#xff0c;我们想要查询emp表和stu表两个表&#xff0c;按照我们之前的知识栈&#xff0c;我们直接使用…...

Leetcode-132.Palindrome Partitioning II [C++][Java]

目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-132.Palindrome Partitioning IIhttps://leetcode.com/problems/palindrome-partitioning-ii/description/132. 分割回文串 II - 力扣&#xff08;LeetCode&#xff09;132. 分割回文串 II - 给你一个字符串 s&…...

在 macOS 上优化 Vim 用于开发

简介 这篇指南将带你通过一系列步骤&#xff0c;如何在 macOS 上优化 Vim&#xff0c;使其具备 代码补全、语法高亮、代码格式化、代码片段管理、目录树等功能。此外&#xff0c;我们还会解决在安装过程中可能遇到的常见错误。 1. 安装必备工具 在开始 Vim 配置之前&#xff…...

SOME/IP-SD -- 协议英文原文讲解8

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.4.4 S…...

【Agent实战】货物上架位置推荐助手(RAG方式+结构化prompt(CoT)+API工具结合ChatGPT4o能力Agent项目实践)

本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 结论 效果图示 1.prompt 2. API工具封…...