马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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.NumTestSets
- trainIdx = 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.NumTestSets
- trainIdx = 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折。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |