能否有人帮助解决并解释我的错误?我有两个用于分类树的数值矩阵
x: 数据矩阵 <2422×39 double>
y: 列向量,每个实例的类标签 <2422×1 double>
我正在做:
t = classregtree(x, y, 'method','classification');yPredicted = eval(t, x);cm = confusionmat(y,yPredicted); // 错误
使用 ==> confusionmat 时出错,错误在第52行
G和GHAT需要是相同类型。
树成功构建。但我无法为该示例获取混淆矩阵
我阅读了该帖子以编写上述代码 Matlab中的决策树
如果我使用链接中的完全相同示例,它可以工作,但当我使用自己的数据时却不工作。我构建回归树时采取了相同的步骤( t = classregtree(x, y) ),并且在confusionmat()函数中没有错误。请解释我做错了什么。
提前感谢
回答:
在我看来,在你的情况下,eval(t,x) 返回的是字符类型单元,而你的x和y是“double”类型而不是“char”。
在Matlab中的决策树中的代码之所以能工作,是因为:
y = strcat(Origin,{});
返回的y是一个包含“char”的单元。因此参数G和GHAT具有相同类型。
所以,选择适合你问题的方案:
方法A:将yPredicted转换为数值矩阵
编辑这行代码:
yPredicted = eval(t, x);
为:
yPredicted = str2num( cell2mat( eval(t, x) ) );
方法B:在调用confusionmat()之前将y转换为字符单元
y = num2cell( num2str(y) )