MATLAB crossvalind 函数在元胞数组上抛出错误
MATLAB crossvalind function throws error on cell array
我正在尝试构建基于离散序列的 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);
时,出现以下错误:
Error using grp2idx (line 106)
A grouping variable must be a categorical, numeric, logical, datetime or >duration vector, a cell vector of strings, or a 2D
character array.
我需要每个单元格(单元格包含序列)属于 k 组(k 折叠)中的一个组。
例如(k=2 折):
seqs{1} - Group 1
seqs{2} - Group 2
seqs{3} - Group 2
seqs{4} - Group 1
当我使用矩阵时不会出现此错误,但由于我必须使用元胞数组,矩阵不是一个选项。
如何对元胞数组进行交叉验证?
为什么不直接使用序列的大小来生成索引
indices = crossvalind('Kfold',numel(seqs),2);
我正在尝试构建基于离散序列的 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);
时,出现以下错误:
Error using grp2idx (line 106) A grouping variable must be a categorical, numeric, logical, datetime or >duration vector, a cell vector of strings, or a 2D character array.
我需要每个单元格(单元格包含序列)属于 k 组(k 折叠)中的一个组。
例如(k=2 折):
seqs{1} - Group 1
seqs{2} - Group 2
seqs{3} - Group 2
seqs{4} - Group 1
当我使用矩阵时不会出现此错误,但由于我必须使用元胞数组,矩阵不是一个选项。
如何对元胞数组进行交叉验证?
为什么不直接使用序列的大小来生成索引
indices = crossvalind('Kfold',numel(seqs),2);