我想将一个语料库划分为训练和测试,以分层的方式设置。
观测数据点排列在矩阵A中,如
A=[16,3,0;12,6,4;19,2,1;.........;17,0,2;13,3,2]矩阵的每一列都代表一个不同的特征。
在Matlab中,cvpartition(A,'holdout',p)函数要求A是一个向量。如何使用A作为一个矩阵来执行相同的操作,即产生的集合与原始语料库中每个特征的分布大致相同。
发布于 2012-09-05 13:10:29
通过使用矩阵A而不是分组数据,您可以假设数据的随机分区将返回具有相同列分布的测试和训练集。
通常,您在问题中所做的假设是,A有一个分区,使得每个A的边际分布(每列1)对所有三个变量都有相同的分布。不能保证这是真的。检查矩阵中的列是否相关。如果没有,只需对1进行分区,并使用行索引来定义测试矩阵:
cv = cvpartition(A(:, 1), 'holdout', p);
text_mat = A(cv.test, :);如果它们是相关的,你可能需要回去重新考虑你想要做什么。
https://stackoverflow.com/questions/9206790
复制相似问题