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

R语言createDataPartition报错:y需至少2个数据点的解决方法

问题解决思路

报错核心原因

报错y must have at least 2 data points是因为train$type不满足createDataPartition的分层抽样要求:要么仅包含单一类别(全0或全1),要么某类别的数据量不足2条,导致无法完成分层抽样操作。

先排查数据状态

运行以下代码确认数据的类别分布和总量:

# 查看恶意/良性URL的数量分布
table(train$type)
# 查看训练集总数据量
length(train$type)

针对性修复方案

  • 情况1:train$type只有单一类别
    说明训练集数据存在问题,检查数据导入流程是否有误,或是否在预处理阶段误过滤掉了某类数据,重新获取同时包含恶意(0)和良性(1)URL的完整数据集即可。

  • 情况2:某类别数据量极少(比如仅1条)
    此时无法按原比例执行分层抽样,可选择两种处理方式:

    1. 调整抽样比例:降低p值,确保小类别能抽到至少1条数据,比如将p=0.2改为p=0.05(根据实际数据量灵活调整):
      set.seed(1, sample.kind="Rounding")
      test_index <- caret::createDataPartition(y = train$type, times = 1, p = 0.05, list = FALSE)
      
    2. 改用简单随机抽样:放弃分层抽样,直接随机选取测试集(注意:这种方式可能导致测试集缺失某类数据,后续模型评估需留意):
      set.seed(1, sample.kind="Rounding")
      test_index <- sample(nrow(train), size = floor(0.2*nrow(train)), replace = FALSE)
      
  • 情况3:总数据量不足2条
    属于数据集本身规模过小,需要补充更多URL数据后再进行后续分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:50:29