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

MATLAB的cvpartition函数用法


1. 函数作用

cvpartition 将数据集划分为训练集和测试集,支持多种交叉验证方法,包括:

  • Hold-Out验证:单次划分(如70%训练,30%测试)
  • K折交叉验证:数据分为K个子集,依次用其中一个作为测试集
  • 留一法(Leave-One-Out):每次留一个样本作为测试集
  • 分层交叉验证:保持不同类别的样本比例一致

2. 基本语法

c = cvpartition(n, 'Method', value, ...)
c = cvpartition(group, 'Method', value, ...)  % 分层选项

3. 参数说明

参数说明
n样本数量
group类别标签向量(用于分层交叉验证)
'Method'验证方法:'HoldOut', 'KFold', 'LeaveOut'
'HoldOut'参数测试集比例 p(默认0.1)
'KFold'参数折数 k(默认10)

4. 常用方法示例

Hold-Out 验证
data = rand(100, 5); % 100个样本,5个特征
c = cvpartition(100, 'HoldOut', 0.3); % 30%作为测试集trainIdx = training(c); % 逻辑索引(训练集)
testIdx = test(c);      % 逻辑索引(测试集)trainData = data(trainIdx, :);
testData = data(testIdx, :);
K折交叉验证(5折)
c = cvpartition(100, 'KFold', 5);
for i = 1:c.NumTestSetstrainIdx = training(c, i); % 第i折的训练索引testIdx = test(c, i);      % 第i折的测试索引% 在此训练和验证模型
end
分层K折交叉验证
labels = [ones(50,1); zeros(50,1)]; % 类别标签(二分类)
c = cvpartition(labels, 'KFold', 5); % 保持各类比例% 查看每折的类别分布
disp(c.TestSize); % 每折测试集样本数
留一法(LOO)
c = cvpartition(100, 'LeaveOut');
for i = 1:c.NumTestSetstrainIdx = training(c, i);testIdx = test(c, i); % 每次仅1个测试样本
end

5. 对象属性与方法

  • 属性
    • c.NumTestSets:测试集数量(K折时为K)
    • c.TrainSize:各训练集大小
    • c.TestSize:各测试集大小
  • 方法
    • training(c, i):获取第i折的训练索引
    • test(c, i):获取第i折的测试索引
    • repartition(c):重新随机化分区(仅Hold-Out和KFold)

6. 注意事项

  • 随机种子:使用 rng(seed) 确保结果可重复。
  • 分层必要性:分类问题建议使用分层选项,避免类别分布不均。
  • 大数据慎用LOO:留一法计算成本高,样本量大时改用K折。

相关文章:

  • 基于Matlab实现耦合模理论仿真程序
  • 为了结合后端而学习前端的学习日志(1)——纯CSS静态卡片案例
  • STM32 CAN总线
  • 图片文件转base64存储在数据库
  • 【Python Number(数字)】
  • 性能优化-初识(C++)
  • 自定义Widget开发:手势交互处理
  • ES6入门---第三单元 模块五:Map和WeakMap
  • CentOS 安装 Zellij 终端复用器教程
  • WHAT - Rust 静态派发(Static Dispatch)和 动态派发(Dynamic Dispatch)
  • 【MongoDB篇】MongoDB的分片操作!
  • HTB - Eureka记录
  • 如何使用极狐GitLab 软件包仓库功能托管 maven?
  • 【JS逆向基础】WEB自动化
  • 给小白的AI Agent 基本技术点分析与讲解
  • Node.js 的 child_process 模块详解
  • IIS配置SSL
  • Flowchart 流程图的基本用法
  • 新能源汽车中的NVM计时与RTC计时:区别与应用详解
  • [ubuntu]fatal error: Eigen/Core: No such file or directory
  • 重庆荣昌区委区政府再设“答谢宴”,邀请800余名志愿者机关食堂用餐
  • 人民日报刊文:守护“技术进步须服务于人性温暖”的文明底线
  • 图忆|红场阅兵:俄罗斯30年来的卫国战争胜利日阅兵式
  • 见微知沪|优化营商环境,上海为何要当“细节控”自我加压?
  • 万玲、胡春平调任江西省鹰潭市副市长
  • 美联储连续第三次维持利率不变,警示关税影响