Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想以分层的方式将语料库划分为训练和测试集。
观察数据点排列在一个矩阵 A中
A
A=[16,3,0;12,6,4;19,2,1;.........;17,0,2;13,3,2]
矩阵的每一列代表一个不同的特征。
在 Matlab 中,cvpartition(A,'holdout',p)函数需要A是一个向量。如何使用矩阵执行相同的操作,A即结果集的每个特征的分布与原始语料库中的分布大致相同。
cvpartition(A,'holdout',p)
通过使用矩阵 A 而不是分组数据,您假设数据的随机分区将返回具有相同列分布的测试和训练集。
一般来说,您在问题中所做的假设是 A 的一个分区使得 A 的每个边际分布(每列 1 个)在所有三个变量中具有相同的分布。不能保证这是真的。检查矩阵的列是否相关。如果不是,只需在 1 上进行分区并使用行索引来定义测试矩阵:
cv = cvpartition(A(:, 1), 'holdout', p); text_mat = A(cv.test, :);
如果它们是相关的,您可能需要返回并重新考虑您正在尝试做什么。