0

我想在 MATLAB 中为二进制数据训练决策树。这是我使用的数据示例。traindata <87*239> [包含 239 个特征的数据数组]

1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 ... [till 239]
1 1 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 ... [till 239]
....

问题是该数据对应于一个只有是/否选项的表单。表格的结果也是二元的,意思是 patinet 是否患有某种医学疾病!我们使用了分类树,分类器向我们显示了双数。例如,它根据 x137 值是否大于 0.75 来分支第一个节点!由于我们的数据中没有 0.75,并且它没有是/否的含义,我们希望使用最适合我们工作的决策树。对我们来说最好的决策树是基于布尔变量而不是双变量训练的决策树。它还理解数据不是连续的,例如,而不是上面的表示,显示 x137 是是或否(1 或 0)。有人可以帮我弄这个吗?如果布尔决策树不适用,我也很欣赏将我们的数据映射到双变量和特征的解决方案。我目前在 matlab 中使用 classregtree,其中 <87*237> 作为训练,<87*1> 作为结果。

4

2 回答 2

2

classregtree有一个可选的输入参数categorical。使用此选项,您可以传入一个向量,指示哪些输入变量是分类变量(在您的情况下,此向量将为 1x239,全为 1)。然后,决策树应该包含是/否决策,而不是数字阈值。

于 2012-05-27T19:37:00.987 回答
0

在 classregtree 的帮助下:

t = classregtree(X,y) 创建一个决策树 t,用于预测响应 y 作为 X 列中的预测变量的函数。X 是一个 n×m 的预测变量值矩阵。如果 y 是 n 个响应值的向量,则 classregtree 执行回归。如果 y 是分类变量、字符数组或字符串元胞数组,则 classregtree 执行分类。

在您的情况下,y 的类型是什么?在您的情况下,classregtree 似乎正在做回归,但您想要分类。所以,y 应该是一个分类变量。

编辑:要使您的 y 分类,您可以尝试“名义(y)”。

于 2012-05-27T17:57:43.370 回答