我有一组数据,尺寸为1672×6。我已经将其中一些数据放到了图片中。
其中x值为A1 A2 A3 A4 A5 A6,y值为B1 B2 ….B1672。
我在生成决策树时使用了以下代码:
vars = {'A1', ' A2 ','A3',' A4 ','A5',' A6'}x = [A1 A2 A3 A4 A5 A6];y = [B];t = classregtree(x, y, 'method','classification', 'names',vars, ... 'categorical',[2 4], 'prune','off');view(t)
它生成的树非常复杂,如下图所示:
我想获得比我提供的值更大的值。当我说:
inst = [3 2.3 2 0 1 0];prediction = eval(t, inst)
它只给我那个变量的B值(如B271),但我想得到所有比inst
变量值大的B变量,例如A1>3 A2>2.3 A3>2 A4>0 A5>1 A6>0
。我该如何获得这些值?
回答:
你似乎把两件事混淆了:决策树和查找所需行
如果你想找到所有大于inst
的行,以下是一个简单的代码,它会打印出所有这样的行。
for i = 1:size(B,1) if all(a(i,:)>inst)==1 i, endend
然而,决策树是一个完全不同的主题。在决策树中,你有一组条件(在你的例子中是A1到A6)和许多用于训练的行(B1到B1672),以及每个条件的结果。当查询一个新的测试案例时,机器会从所有可能的结果中决定最佳结果。