G и GHAT должны быть одним и тем же деревом классификации - PullRequest
2 голосов
/ 15 марта 2012

Может кто-нибудь помочь решить и, если возможно, объяснить мою ошибку.У меня есть две числовые матрицы для использования в дереве классификации

x: матрица данных <2422x39 double>

y: вектор столбца, метка класса для каждого экземпляра <2422x1 double>

Я делаю:

t = classregtree(x, y, 'method','classification');
yPredicted = eval(t, x);
cm = confusionmat(y,yPredicted); // error

Ошибка использования ==> confusionmat на 52

G и GHAT должны быть одного типа.

Дерево успешно построено.Но я не могу получить матрицу путаницы для этого примера

Я прочитал этот пост, чтобы написать код выше Дерево решений в Matlab

Если я использую точно такой же пример из ссылки, он работает, нокогда я использую свой, он не работает.Те же шаги, которые я предпринял для построения дерева регрессии (t = classregtree (x, y)) и без ошибок в функции confusionmat ().Пожалуйста, объясните, что я делаю неправильно.

Заранее спасибо

1 Ответ

2 голосов
/ 15 марта 2012

Мне кажется, в вашем случае, eval (t, x) возвращает ячейки типа char, в то время как ваши x и y идут с типом "double" вместо "char".

Причина кодав Дерево решений в Matlab работает потому, что:

y = strcat(Origin,{});

возвращает y, представляющую собой ячейку с "char".Таким образом, аргументы G и GHAT имеют одинаковый тип.

Итак, выберите тот, который подходит вашей проблеме:


Подход A: преобразовать yPredicted в числовую матрицу

Редактировать эту строку:

yPredicted = eval(t, x);

в:

yPredicted = str2num( cell2mat( eval(t, x) ) );

Подход B: преобразовать y в ячейку char перед вызовом confusionmat ()

 y = num2cell( num2str(y) )
...