Вот пример использования CLASSREGTREE для классификации:
%# load dataset
load fisheriris
%# split training/testing
cv = cvpartition(species, 'holdout',1/3);
trainIdx = cv.training;
testIdx = cv.test;
%# train
t = classregtree(meas(trainIdx,:), species(trainIdx), 'method','classification', ...
'names',{'SL' 'SW' 'PL' 'PW'});
%# predict
pred = t.eval(meas(testIdx,:));
%# evaluate
cm = confusionmat(species(testIdx),pred)
acc = sum(diag(cm))./sum(testIdx)
Вывод (путаница матрицы и точности):
cm =
17 0 0
0 13 3
0 2 15
acc =
0.9
Теперь, если ваш целевой класс закодирован как числа, возвращаемое предсказание все равно будет массивом строк, поэтому вам нужно преобразовать их обратно в числа:
%# load dataset
load fisheriris
[species,GN] = grp2idx(species);
%# ...
%# evaluate
cm = confusionmat(species(testIdx),str2double(pred))
acc = sum(diag(cm))./sum(testIdx)
Обратите внимание, что классификация всегда будет возвращать строки, поэтому я думаю, что вы, возможно, ошибочно использовали опцию method=regression
, которая выполняет регрессия (числовая цель), а не классификация (дискретная цель)