有人可以帮助解决,如果可能的话,解释我的错误。 我有两个数字矩阵在分类树中使用它
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))采取了相同的步骤,并且在confusionmat()函数中没有错误。 请解释一下我做错了什么。
提前致谢
答案 0 :(得分:2)
在我看来,eval(t,x)返回char类型的单元格,而x和y则带有“double”类型而不是“char”。
Decision Tree in Matlab中的代码有效的原因是:
y = strcat(Origin,{});
返回y,即带有“char”的单元格。因此,参数G和GHAT具有相同的类型。
因此,选择一个适合您的问题:
方法A:将y预测转换为数字矩阵
编辑此行:
yPredicted = eval(t, x);
到:
yPredicted = str2num( cell2mat( eval(t, x) ) );
方法B:在调用confusionmat()之前将y转换为char的单元格
y = num2cell( num2str(y) )