qidao123.com技术社区-IT企服评测·应用市场

标题: MATLAB的cvpartition函数用法 [打印本页]

作者: 十念    时间: 2025-5-8 18:25
标题: MATLAB的cvpartition函数用法

1. 函数作用

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


2. 基本语法

  1. c = cvpartition(n, 'Method', value, ...)
  2. c = cvpartition(group, 'Method', value, ...)  % 分层选项
复制代码

3. 参数说明

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

Hold-Out 验证

  1. data = rand(100, 5); % 100个样本,5个特征
  2. c = cvpartition(100, 'HoldOut', 0.3); % 30%作为测试集
  3. trainIdx = training(c); % 逻辑索引(训练集)
  4. testIdx = test(c);      % 逻辑索引(测试集)
  5. trainData = data(trainIdx, :);
  6. testData = data(testIdx, :);
复制代码
K折交叉验证(5折)

  1. c = cvpartition(100, 'KFold', 5);
  2. for i = 1:c.NumTestSets
  3.     trainIdx = training(c, i); % 第i折的训练索引
  4.     testIdx = test(c, i);      % 第i折的测试索引
  5.     % 在此训练和验证模型
  6. end
复制代码
分层K折交叉验证

  1. labels = [ones(50,1); zeros(50,1)]; % 类别标签(二分类)
  2. c = cvpartition(labels, 'KFold', 5); % 保持各类比例
  3. % 查看每折的类别分布
  4. disp(c.TestSize); % 每折测试集样本数
复制代码
留一法(LOO)

  1. c = cvpartition(100, 'LeaveOut');
  2. for i = 1:c.NumTestSets
  3.     trainIdx = training(c, i);
  4.     testIdx = test(c, i); % 每次仅1个测试样本
  5. end
复制代码

5. 对象属性与方法



6. 留意事项




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4