我正在尝试构建基于离散序列的HMM模型。 意思是我有一个单元格数组,每个单元格包含一个不同长度的序列。
例如:
seqs{1} = 2 3 6 4 7 1 5 13 14 15 16 0 0 0 0 12
seqs{2} = 2 3 6 4 7 1 5 19 10 11 13
seqs{3} = 2 3 6 4 7 1 5 19 10
seqs{4} = 2 3 6 4 7 1 5 19 10 12
现在,我想使用matlab crossvalind
函数进行K折交叉验证。
当我尝试运行indices = crossvalind('Kfold',seqs,2);
时出现以下错误:
使用grp2idx时出错(第106行) 分组变量必须是分类,数字,逻辑,日期时间或>持续时间向量,字符串的单元格向量或2D 字符数组。
我需要每个细胞(细胞含有序列)属于k组(k-折叠)的组。
例如(k = 2倍):
seqs{1} - Group 1
seqs{2} - Group 2
seqs{3} - Group 2
seqs{4} - Group 1
当我使用矩阵时,不会出现此错误,但由于我必须使用单元格数组,因此矩阵不是一个选项。
如何在单元阵列上进行交叉验证?
答案 0 :(得分:1)
为什么不直接使用seqs的大小来生成索引
indices = crossvalind('Kfold',numel(seqs),2);