首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is分区和交叉between的区别是什么?

is分区和交叉between的区别是什么?
EN

Stack Overflow用户
提问于 2018-06-06 22:09:53
回答 1查看 2.4K关注 0票数 1
代码语言:javascript
复制
load fisheriris;
y = species; %label
X = meas;

%Create a random partition for a stratified 10-fold cross-validation.

c = cvpartition(y,'KFold',10);
%  split training/testing sets
[trainIdx testIdx] = crossvalind('HoldOut', y, 0.6);

crossvalind用于执行交叉验证,通过返回索引,将整个特性集X随机分成训练和测试数据。利用这些指标,我们可以分别生成X(trainIdx,:)X(testIdx,:)的训练数据和测试数据。cvpartition也使用分层和非分层的方法来分割数据,但是它不返回指数。我还没有看到crossvalind是一种分层或非分层技术的例子。

问:crossvalindcvpartition可以一起使用吗?

我想做分层交叉验证。但我不知道如何将数据集划分为训练和测试,并得到指标。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 13:16:48

交叉验证和训练/测试分区是评估模型性能的两种不同的方法,而不是构建模型本身的不同方法。通常,您应该使用您拥有的所有数据构建一个模型,但也应该使用这些技术之一(使用该数据的子集构建和评分一个或多个附加模型)来估计主模型可能会有多好。

交叉验证平均多个训练/测试分裂的结果,所以通常会给出一个更现实的,即更悲观的估计模型的性能。

在您提到的两个功能中,crossvalind似乎是特定于生物信息学工具箱的,并且相当古老。帮助 for cvpartition给出了一个如何进行分层交叉验证的示例:

示例 对虹膜数据进行10倍分层交叉验证,计算分类误差。 负载(‘fisheriris’);CVO =cv分区(物种,'k',10);err =零(CVO.NumTestSets,1);for i= 1:CVO.NumTestSets trIdx = CVO.training(i);teIdx = CVO.test(i);ytest =分类(meas(teIdx,:),meas(trIdx,:),.物种(trIdx,:),err(i) =sum(~strcmp,物种(TeIdx)),cvErr = sum(err)/sum(CVO.TestSize);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50730354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档