讲师中心 微信公众号
AI工具推荐 视频效率加速

解决Bootstrap循环中F1/精确率/召回率恒为1的问题

云伟大大_8421

云伟大大_8421

发布时间:2026-07-21 21:53:07

|

620人浏览过

|

来源于php中文网

原创

解决Bootstrap循环中F1/精确率/召回率恒为1的问题

该问题源于训练-测试数据划分未在每次bootstrap迭代中基于重采样数据执行,导致模型始终在原始固定数据上训练和评估,若原始标签分布单一或存在数据泄露,将产生虚假的100%指标。

该问题源于训练-测试数据划分未在每次bootstrap迭代中基于重采样数据执行,导致模型始终在原始固定数据上训练和评估,若原始标签分布单一或存在数据泄露,将产生虚假的100%指标。

在使用Bootstrap评估分类器性能时,一个常见但隐蔽的错误是混淆了重采样目标与实际建模数据。你提供的代码中,核心问题在于:

chosen_rows = np.random.choice(numb_rows, replace=True, size=numb_rows)
bootstrap_sample = data.iloc[chosen_rows]  # ← 此样本未被用于后续建模!
...
X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=0.2, random_state=1)  # ← 仍用原始x/y!

✅ 关键错误:bootstrap_sample 被生成却未参与模型训练;train_test_split 始终对原始 x 和 y 划分——这意味着每次循环都在同一份静态数据上重复训练和测试。若原始 y 标签高度不平衡(如全为同一类)、或模型在该固定数据集上过拟合(如决策树未剪枝且样本量小),就极易输出 precision=recall=f1=1.0。

? 正确做法:Bootstrap的核心是「对观测单元(样本行)重采样 → 在重采样子集上完整拟合并评估模型」。因此,x 和 y 必须同步从 bootstrap_sample 中提取,并确保 train_test_split 作用于该重采样数据:

VPS Bootstrap
VPS Bootstrap

从零启动全新 VPS,完成 OpenClaw 完整部署,包括备份/恢复及恢复后验证。用于 OpenClaw 部署。

下载
for k in range(Nboot):
    # 1. 重采样原始数据索引(假设data包含x和y)
    chosen_rows = np.random.choice(len(data), replace=True, size=len(data))
    bootstrap_sample = data.iloc[chosen_rows].copy()

    # 2. 从重采样数据中分离特征与标签(需确保data结构合理)
    X_boot = bootstrap_sample.drop(columns=['target']).values  # 替换'target'为你的标签列名
    y_boot = bootstrap_sample['target'].values

    # 3. 在重采样数据上划分训练/测试集(注意:test_size应适中,避免过小导致评估不稳定)
    X_train, X_test, Y_train, Y_test = train_test_split(
        X_boot, y_boot, test_size=0.2, random_state=42 + k  # 每次random_state不同,避免重复划分
    )

    # 4. 训练、预测、评估(保持average="macro"一致性)
    model = DecisionTreeClassifier(random_state=42 + k).fit(X_train, Y_train)
    y_pred = model.predict(X_test)

    precision.append(metrics.precision_score(Y_test, y_pred, average="macro", zero_division=0))
    recall.append(metrics.recall_score(Y_test, y_pred, average="macro", zero_division=0))
    f1.append(metrics.f1_score(Y_test, y_pred, average="macro", zero_division=0))
    models.append(model)

⚠️ 必须检查的前置条件:

  • y 必须作为函数参数显式传入(原代码缺失),且不能是常量数组(如 np.ones(n));
  • data 需包含完整特征+标签,或确保 x/y 与 bootstrap_sample 行索引严格对齐;
  • 若 y 中某类在某个 Bootstrap 子集中完全缺失,precision_score 等会报 UndefinedMetricWarning;建议添加 zero_division=0 参数避免中断;
  • random_state 在 train_test_split 中不应固定为 1(否则每次划分完全相同),应随循环变化(如 42 + k)或设为 None。

? 总结:Bootstrap评估的有效性依赖于「每次迭代独立重采样→独立建模→独立评估」的闭环。任何跳过重采样数据、复用原始数据的行为,都会使指标失去统计意义。调试时,可打印 np.unique(y_boot) 和 len(Y_train), len(Y_test) 验证每次迭代的数据多样性。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

相关专题

更多
Python 机器学习入门与 Scikit-Learn 实战
Python 机器学习入门与 Scikit-Learn 实战

面向机器学习初学者,以 Scikit-Learn 为核心工具,讲解机器学习基本概念(监督学习/无监督学习/模型评估)、数据预处理(标准化/归一化/缺失值填充/特征编码)、常用分类算法(逻辑回归/决策树/随机森林/SVM/KNN)、回归算法(线性回归/岭回归/Lasso)、无监督聚类(K-Means/DBSCAN)、交叉验证与超参数调优(GridSearch/RandomSearch)、混淆矩阵与 ROC/AUC 模型评估指标,帮助开发者

335

2026.04.24

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

80

2026.09.30

LLVM RISC-V参数配置教程
LLVM RISC-V参数配置教程

本专题介绍LLVM对RISC-V基础ISA和扩展的支持方式,涵盖RV32、RV64、标准扩展、实验性扩展、厂商扩展、-menable-experimental-extensions和版本差异。

80

2026.09.30

LLVM IR中间表示入门指南
LLVM IR中间表示入门指南

本专题整理LLVM IR的核心概念,包括中间表示作用、模块结构、函数、基本块、SSA形式、类型系统和常见语法,帮助新手理解LLVM编译流程中的关键层。

40

2026.09.30

PDF转图片方法
PDF转图片方法

需要把 PDF 页面用于上传、预览、分享或图片归档时,PDF 转图片方法专题整理 JPG/PNG 格式选择、逐页导出、清晰度设置、批量下载和结果检查等流程,帮助用户稳定完成 PDF 图片化处理。

40

2026.09.30

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

60

2026.09.29

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

280

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

160

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

120

2026.09.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap5 入门教程
Bootstrap5 入门教程

共0课时 | 0人学习

Bootstrap Components 组件文档
Bootstrap Components 组件文档

共0课时 | 0人学习

Bootstrap Grid 栅格系统
Bootstrap Grid 栅格系统

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn