对样本进行分区以在样本子集中进行交叉验证(按学校划分)(Matlab)

时间:2019-04-06 17:42:41

标签: matlab machine-learning cross-validation

我需要使用Matlab对数据集进行5种交叉验证的5种方式进行分区。但是,该数据集与嵌套在学校中的学生有关,因此我不想将整个数据集分为5种方式,而是希望将每所学校分为5种方式。构建了5个训练和5个测试数据集之后,我希望能够分辨出每个数据集中的哪些观测值属于每个学校。

在完整的数据集中,我有一个特征向量x(28x15363)和目标向量y(1x15363)。我还有一个索引向量(task_indexes),用于标识每个学校的第一次观察。

我想基于每所学校的5倍分区,构建一组5个训练集索引和5个相应的测试集索引,并且我将需要一组任务索引,5个tr_indexs来标识每个学校的初次观察每个训练集中的学校和tsk_indexes,它们对测试集的作用相同。

训练集索引tr,测试集索引tst,训练集任务索引tr_indexes和测试集任务索引tst_indexes应该适合以下代码。

gammas = [.1, .01, .001, .0001, .00001]

errgrid = zeros(5,1)

for g = 1:length(gammas)
    gammas = gammas(4)
    [testerrs,theW,theD] = ...
        run_code_example(gammas, x(:, tr), y(tr), x(:, tst), y(tst), tr_indexes, tst_indexes, Dini, 10, 'feat', 0, fname);
    errgrid(g) = testerrs

gammaselect = gammas(min(errgrid))

在此代码中,我使用作者提供的分区,其中包含训练集索引tr和测试索引tst,任务索引tr_indexes用于训练集,tst_indexes用于测试集。

关于如何进行此分区的任何建议?

我试图按照写一个好问题的标准来写这篇文章。如果有人可以提供反馈来改善问题,将不胜感激。

0 个答案:

没有答案