Matlab - 多维数据的分层抽样

时间:2012-02-09 07:12:04

标签: matlab sampling

我想将语料库划分为 training& amp;测试集以分层方式。

观察数据点以矩阵 A排列为

A=[16,3,0;12,6,4;19,2,1;.........;17,0,2;13,3,2]

矩阵的每一列代表一个独特的特征。

在Matlab中,cvpartition(A,'holdout',p)函数需要A作为向量。如何使用A作为 Matrix 执行相同的操作,即结果集与原始语料库中的每个要素的分布大致相同。

1 个答案:

答案 0 :(得分:0)

通过使用矩阵A而不是分组数据,您假设数据的随机分区将返回具有相同列分布的测试和训练集。

一般而言,您在问题中所做的假设是A的分区使得A的每个边际分布(每列1个)在所有三个变量中具有相同的分布。无法保证这是真的。检查矩阵的列是否相关。如果不是,只需在1上分区并使用行索引来定义测试矩阵:

cv = cvpartition(A(:, 1), 'holdout', p);
text_mat = A(cv.test, :);

如果它们相关,您可能需要返回并重新考虑您要执行的操作。