You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现仅对数据集中指定类型样本的resample操作?

核心错误原因

当前代码的采样输入对象从根源上就错了:Stroke['stroke']==1 是和原数据集长度一致的布尔掩码,作用是标记哪些行属于正例,本身不是筛选完成的正例数据。把这个由真假值组成的数组丢给resample方法,自然是对布尔值本身做采样,最终返回全是True/False的结果。

正确实现流程
  • 先通过布尔索引从原数据集里把所有正例的完整样本筛出来,这才是重采样要操作的对象
  • 把筛好的正例子集传入resample接口,按照需要的目标采样数执行有放回重采样
  • 等重采样完成后,把新生成的正例子集和原来的负例样本上下拼起来,就得到了分布平衡的完整训练集
修正后的参考代码
# 第一步:筛选出所有原始正例样本
positive_raw = Stroke[Stroke['stroke'] == 1]
# 第二步:对正例子集执行有放回重采样,目标采样总数设为800
bootstrap_positive = resample(
    positive_raw,
    replace=True,
    n_samples=800,
    random_state=1
)
实操注意事项
  • 设多少n_samples要结合实际的负例规模调整,一般平衡后正负例比例在1:2到1:1区间就够了,正例采得太多反而容易让模型过拟合重复的正例样本
  • 固定random_state的取值,能保证每次跑代码的采样结果完全可复现,不会因为采样随机性干扰后续的模型对比实验
  • 重采样只能作用于拆分后的训练集部分,绝对不要碰测试集,否则会让模型评估结果完全失真

内容的提问来源于stack exchange,提问作者Dillon Hector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 14:06:03