Дерево решений в Matlab

Я видел справку в Matlab, но они обеспечили пример, не объясняя, как использовать параметры в функции 'classregtree'. Любая справка для объяснения использования 'classregtree' с его параметрами будет цениться.

11
задан 10 July 2016 в 22:23
поделиться

1 ответ

Страница документации функции classregtree является поясняющей....

Перейдем к некоторым наиболее распространенным параметрам модели дерева классификации:

  • x: матрица данных, строки - экземпляры, столбцы - предсказывающие атрибуты
  • y: вектор столбца, метка класса для каждого экземпляра
  • категорическая: указать, какие атрибуты дискретного типа (в отличие от непрерывного)
  • метод: создавать ли классификацию или дерево регрессии (в зависимости от типа класса)
  • имена: давать имена атрибутам
  • prune: включить/выключить редуцированную обрезку
  • minparent/minleaf: позволяет указать минимальное количество экземпляров в узле, если его нужно разделить
  • nvartosample: используется в случайных деревьях (рассмотрим K случайно выбранных атрибутов в каждом узле)
  • весов: дает имена атрибутов
  • prune: дает имена атрибутов
  • prune: используется в случайных деревьях: specify weighted instances
  • cost: specify cost matrix (штраф за различные ошибки)
  • splitcriterion: критерий, используемый для выбора лучшего атрибута при каждом разбиении. Я знаком только с индексом Джини, который является вариацией критерия Information Gain.
  • preprob: однозначно указать вероятности предыдущего класса, а не рассчитываться по данным тренинга

Полный пример для иллюстрации процесса:

%# load data
load carsmall

%# construct predicting attributes and target class
vars = {'MPG' 'Cylinders' 'Horsepower' 'Model_Year'};
x = [MPG Cylinders Horsepower Model_Year];  %# mixed continous/discrete data
y = cellstr(Origin);                        %# class labels

%# train classification decision tree
t = classregtree(x, y, 'method','classification', 'names',vars, ...
                'categorical',[2 4], 'prune','off');
view(t)

%# test
yPredicted = eval(t, x);
cm = confusionmat(y,yPredicted);           %# confusion matrix
N = sum(cm(:));
err = ( N-sum(diag(cm)) ) / N;             %# testing error

%# prune tree to avoid overfitting
tt = prune(t, 'level',3);
view(tt)

%# predict a new unseen instance
inst = [33 4 78 NaN];
prediction = eval(tt, inst)    %# pred = 'Japan'

tree


Update:

Класс вышеприведенного classregtree class был признан устаревшим и заменен на ClassificationTree и RegressionTree классы в R2011a (см. функции fitctree и fitrtree , новые в R2014a).

Вот обновленный пример, использующий новые функции/классы:

t = fitctree(x, y, 'PredictorNames',vars, ...
    'CategoricalPredictors',{'Cylinders', 'Model_Year'}, 'Prune','off');
view(t, 'mode','graph')

y_hat = predict(t, x);
cm = confusionmat(y,y_hat);

tt = prune(t, 'Level',3);
view(tt)

predict(tt, [33 4 78 NaN])
34
ответ дан 3 December 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: