有人可以帮助解决我的错误吗?如果可能的话请解释一下我的错误。 我有两个数字矩阵用于在分类树中使用它
x:数据矩阵<2422x39 double>
y:列向量,每个实例的类标签<2422x1 double>
我正在做:
t = classregtree(x, y, 'method','classification');
yPredicted = eval(t, x);
cm = confusionmat(y,yPredicted); // error
在 52 处使用 ==> 混淆垫时出错
G 和 GHAT 需要是同一类型。
树已成功构建。但我无法获得该示例的混淆矩阵
我已阅读该帖子以编写上述代码 Decision Tree in Matlab
如果我使用链接中完全相同的示例,它可以工作,但是当我使用我自己的示例时,它不起作用。 我为构建回归树( t = classregtree(x, y) )所采取的步骤相同,并且在 fusionmat() 函数中没有错误。 请解释一下我做错了什么。
提前致谢
最佳答案
在我看来,在你的情况下, eval(t,x) 返回 char 类型的单元格,而你的 x 和 y 带有“double”类型而不是“char”。
Decision Tree in Matlab中的代码的原因有效是因为:
y = strcat(Origin,{});
返回 y,它是带有“char”的单元格。因此参数 G 和 GHAT 具有相同的类型。
因此,选择适合您问题的一个:
方法 A:将 yPredicted 转换为数值矩阵
编辑此行:
yPredicted = eval(t, x);
至:
yPredicted = str2num( cell2mat( eval(t, x) ) );
方法B:在调用confusionmat()之前将y转换为char单元格
y = num2cell( num2str(y) )
关于matlab - G和GHAT需要是相同的分类树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714868/