Как я могу получить путь решения к определенному типу класса в дереве решений классификации

Допустим, я создал дерево решений классификации следующим образом:

HP(1:size(HP), end) = 0; LP(1:size(LP), end) = 1;
% the dt's input & target pop
x = [HP(:,1:end-1); LP(:,1:end-1)]; t = [HP(:,end); LP(:,end)];
dt = fitctree(x,t);
view(dt)
view(dt, 'mode', 'graph');

И выходы, как показано ниже:

1  if x2<-21.4866 then node 2 elseif x2>=-21.4866 then node 3 else 1
2  class = 1
3  if x2<20.093 then node 4 elseif x2>=20.093 then node 5 else 0
4  if x1<27.8438 then node 6 elseif x1>=27.8438 then node 7 else 0
5  if x2<39.6866 then node 8 elseif x2>=39.6866 then node 9 else 1
6  if x1<-33.7504 then node 10 elseif x1>=-33.7504 then node 11 else 0
7  class = 1
8  class = 1
9  class = 0
10  class = 1
11  if x2<1.53772 then node 12 elseif x2>=1.53772 then node 13 else 0
12  if x2<-2.50063 then node 14 elseif x2>=-2.50063 then node 15 else 0
13  class = 0
14  if x1<14.2153 then node 16 elseif x1>=14.2153 then node 17 else 0
15  class = 1
16  class = 0
17  class = 1

А также

введите здесь описание изображения

Вопрос:

1) Как я могу получить все пути, ведущие к листьям со значением «0»?

2) Существует ли какой-либо деликатный способ создания новых экземпляров на основе дерева решений (кроме случайного создания экземпляра и цикла до получения желаемого результата)? например, я хочу создать случайный экземпляр, который указанное выше дерево классифицирует как "0"


person dariush    schedule 01.10.2015    source источник


Ответы (1)


Если вы знаете конечный узел решения, вы можете найти путь. и вы можете получить номер конечного узла от [lable, score, node, cusum] = predict(mdl,x);. Если вы хотите получить узел для каждого дерева из Treebagger, вам нужно запустить его в цикле для каждого дерева. [lable, score, node, cusum] = mdl.Trees{i}.predict(x);

person sveer    schedule 24.09.2018