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

标签 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) )所采取的步骤相同,并且在 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/

相关文章:

matlab - 如何标准化直方图

java - MATLAB的interp1函数在J2ME中的实现

java - 用java表示树的层次结构

python - 将基本 Tensorflow 模型导出到 Google Cloud ML

java - 将 .mat 文件转换为 XML —— 需要添加 java 类?

javascript - 在 nodeJS 应用程序中打印我的组树时出现问题

graph - 嵌套映射到表示 Clojure 中的边的元组序列

python - scipy.optimize 约束最小化 SLSQP - 无法 100% 匹配目标

python - Keras - on_batch_end 方法很慢,但我只有回调是检查点

关于稀疏矩阵的Matlab问题