G和GHAT需要是相同的分类树

时间:2012-03-15 06:20:12

标签: matlab tree machine-learning classification

有人可以帮助解决,如果可能的话,解释我的错误。 我有两个数字矩阵在分类树中使用它

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()函数中没有错误。 请解释一下我做错了什么。

提前致谢

1 个答案:

答案 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) )