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

判别分析下R语言gclus包wine数据集70:30拆分训练测试集方法

R语言划分gclus包wine数据集为7:3训练集、测试集方法
  • 完全随机拆分方法
    先加载依赖包与目标数据集:
    # 未安装gclus包时先运行下一行安装
    # install.packages("gclus")
    library(gclus)
    data(wine) # 加载内置wine数据集
    
    提前设置随机种子保证结果可复现,不设置种子的话每次运行抽样结果都会变动,不利于后续分析结果复现,可任意指定一个整数作为种子值:
    set.seed(123)
    
    按总样本量的70%抽取训练集行索引,剩余30%样本归为测试集:
    # 计算训练集样本量,向下取整避免出现非整数样本数
    train_sample_num <- floor(0.7 * nrow(wine))
    # 随机抽取训练集对应的行索引
    train_index <- sample(x = seq_len(nrow(wine)), size = train_sample_num)
    # 按索引匹配得到最终的训练集、测试集
    train_set <- wine[train_index, ]
    test_set <- wine[-train_index, ]
    
  • 分层抽样方法(判别分析场景推荐使用)
    判别分析属于分类任务,完全随机抽样可能导致训练集、测试集的葡萄酒类别占比和原数据集偏差较大,分层抽样可以保证两个数据集的类别分布和原数据一致,结果更可靠:
    # 未安装caret包时先运行下一行安装
    # install.packages("caret")
    library(caret)
    set.seed(123)
    # 按数据集的类别列Class做分层抽样,抽取70%样本作为训练集
    train_index <- createDataPartition(y = wine$Class, p = 0.7, list = FALSE)
    train_set <- wine[train_index, ]
    test_set <- wine[-train_index, ]
    

拆分完成后可运行nrow(train_set)、nrow(test_set)核对两个数据集的样本量,确认比例符合要求;也可以运行table(train_set$Class)、table(test_set$Class)核对两个数据集的类别分布是否合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:54:23