cvpartition

类:cvpartition

创建数据的交叉验证分区

描述

C= cvpartition(ñ'KFold'中,k)构造一个对象Ccvpartition限定用于随机nonstratified分区ķ倍交叉验证ñ观察结果。分区划分成观察ķ不相交的子样本(或褶皱),随机选择但具有大致相等的大小。默认值ķ10

C= cvpartition(ñ'坚持',p)的创建于抵抗验证随机nonstratified分区ñ观察结果。这个分区划分的观察到的训练集和测试(或坚持)集。参数p必须是一个标量。什么时候0<p<1cvpartition随机选择约P *ñ观测对于测试集。什么时候p是一个整数,cvpartition随机选择p观测对于测试集。默认值p1/10

C= cvpartition('KFold'中,k)创建分层随机分区ķ倍交叉验证。是数值向量,分类数组,字符数组,字符串数组,或表示类的每个观测特征向量的单元阵列。每个子样品具有大致相等的尺寸和大致相同类的比例如

当您提供作为第一个输入参数以cvpartition中,函数创建不包括对应于缺失值的观测行交叉验证分区

C= cvpartition('KFold'中,k,'分层',stratifyOption)返回一个对象C限定用于随机分区ķ倍交叉验证。当您提供作为第一个输入参数以cvpartition,那么函数实现分层默认。如果您还指定“分层次”,假,则函数创建nonstratified随机分区。

您可以指定“分层次”,真仅当所述第一输入参数cvpartition

C= cvpartition('坚持',p)的随机划分观测到训练集和抵抗(或测试)组与分层,使用类信息。无论是训练和测试集有大致相同比例的类中

C= cvpartition('坚持',P,'分层',stratifyOption)返回一个对象C限定一个随机划分为训练集,并设置一个抵抗(或测试)。当您提供作为第一个输入参数以cvpartition,那么函数实现分层默认。如果您还指定“分层次”,假,则函数创建nonstratified随机分区。

C = cvpartition(N, 'LeaveOut')创造了在留一交叉验证随机分区ñ观察结果。留一出是一个特例'KFold'其中褶皱的数量等于观测值的数量。

C = cvpartition(N, 'resubstitution')创建一个对象C不分区的数据。无论是训练集和测试集包含所有原始的ñ观察结果。

例子

展开全部

分层使用10倍交叉验证来计算错误率。

加载费舍尔的虹膜数据集。

加载fisheriris;Y =物种;X = MEAS;

对于分层创建一个随机分区10倍交叉验证。

C = cvpartition(Y,'KFold',10);

创建一个计算错误分类测试样品数的函数。

有趣= @(xTrain,yTrain,XTEST,yTest)(总和(〜的strcmp(yTest,...分类(XTEST,xTrain,yTrain))));

返回使用交叉验证估计误判率。

率=总和(crossval(乐趣,X,Y,'划分',C)).../sum(c.TestSize)
率= 0.0200

查找每个类的比例在的5倍nonstratified分区fisheriris数据。

加载费舍尔的虹膜数据集。

加载fisheriris;

查找数据中的每个类的实例的数量。

[C,〜,IDX] =唯一的(物种);C%独有类
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
N = accumarray(IDX(:),1)实例的数量%的物种每一类
N =3×150 50 50

这三类发生比例相等。

创建一个随机的,nonstratified 5倍分区。

CV = cvpartition(物种,'KFold'5,'分层',假)
CV = K倍交叉验证分区NumObservations:150个NumTestSets:5 TrainSize:120 120 120 120 120 TestSize:30 30 30 30 30

表明,三类不相等比例的数据组中的每个褶皱发生。

对于I = 1:cv.NumTestSets DISP([“折叠”,num2str(I)])testClasses =物种(cv.test(I));[C,〜,IDX] =唯一的(testClasses);C%独有类NCOUNT = accumarray(IDX(:),1)实例的数目%用于在折叠每个类结束
1折
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
NCOUNT =3×18 13 9
2折
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
NCOUNT =3×110 11 9
3折
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
NCOUNT =3×110 8 12
4折
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
NCOUNT =3×112 8 10
5折
C =3X1细胞{ 'setosa'} { '云芝'} { '锦葵'}
NCOUNT =3×110 10 10

因为简历是的一个随机nonstratified分区fisheriris数据,在每个5倍的类比例不保证等于类的比例种类。也就是说,这些类不会同样在每个倍,因为他们在做的发生,种类。交叉验证生成的结果的随机性,所以你的用于在折叠每个类实例的数目可以从所示的那些改变。

比较实例的数目用于在nonstratified抵抗组与分层抵抗组一个高大的阵列的每个类。

当您在高大的阵列进行计算,MATLAB®使用使用并行池(默认情况下,如果您有并行计算工具箱™)或本地MATLAB会话。如果你想使用时,你有并行计算工具箱本地MATLAB会话运行示例,您可以通过使用改变全球执行环境mapreducer功能。

创建两个类,其中类的数字矢量1和类2发生在比1:10

基= [酮(20,1); 2吨*酮(200,1)]
基团=220×11 1 1 1 1 1 1 1 1 1⋮

创建从一个高大的阵列

T群组=高(基团)
开始使用“本地”轮廓平行池(parpool)......连接到并行池(工号:4)。T群组= 220X1高大双列向量1 1 1 1 1 1 1 1:

坚持是唯一的cvpartition所支持的高个子阵列选项。万博1manbetx创建一个随机的,nonstratified坚持分区。

CV0 = cvpartition(T群组,'坚持'1/4,'分层',假)
CV0 =保持法交叉验证分区NumObservations:[1x1的高大] NumTestSets:1个TrainSize:[1x1的高大] TestSize:[1x1的高大]

返回的结果CV0.test通过使用存储器收集功能。

testIdx0 =聚集(CV0.test);
评估使用并行池“本地”高表达: -  1通过1:在4.1秒评价完成在4.3秒完成

发现在抵抗集合中出现的每个类的次数。

accumarray(组(testIdx0),1)实例的数量%在抵抗组中的每个类
ANS =2×15 51

cvpartition产生在结果的随机性,所以你的每个类实例的数目可以从所示的那些改变。

因为CV0是一个nonstratified分区,类1和类2在抵抗组不能保证他们做在发生在相同的比T群组。但是,由于固有的随机性cvpartition时,有时可以得到这发生在相同比率的类,它们做在一个不渗透性组T群组即使您指定“分层次”,假。类似的结果可以用于训练集来说明。

返回的结果CV0.training内存。

trainIdx0 =聚集(CV0.training);
评估使用并行池“本地”高表达: - 的1遍1:在1.7秒评价完成在1.8秒完成

发现在训练集合中出现的每个类的次数。

accumarray(组(trainIdx0),1)实例的数量%用于训练集中每个类
ANS =2×115 149

在nonstratified训练集中的类不保证以相同的比例,他们这样做的发生T群组

创建一个随机,分层坚持分区。

CV1 = cvpartition(T群组,'坚持'1/4)
CV1 =保持法交叉验证分区NumObservations:[1x1的高大] NumTestSets:1个TrainSize:[1x1的高大] TestSize:[1x1的高大]

返回的结果CV1.test内存。

testIdx1 =聚集(CV1.test);
评估使用并行池“本地”高表达: - 的1遍1:在0.91秒评价完成在1秒完成

发现在抵抗集合中出现的每个类的次数。

accumarray(组(testIdx1),1)实例的数量%在抵抗组中的每个类
ANS =2×14 48

在分层坚持分区,在抵抗组类比和在类比的情况下T群组是相同的(1:10)

算法

  • 如果提供作为第一个输入参数以cvpartition中,函数创建不包括对应于缺失值的观测行交叉验证分区

  • 当您提供作为第一个输入参数以cvpartition,那么函数实现分层默认。您可以指定“分层次”,假创建nonstratified随机分区。

  • 您可以指定“分层次”,真仅当所述第一输入参数cvpartition

扩展功能

也可以看看

|

主题

介绍了在R2008a