predict

Спрогнозируйте метки с помощью дерева классификации

Описание

label = predict(Mdl,X) возвращает вектор предсказанных меток классов для данных предиктора в таблице или матрице X, на основе обученного, полного или компактного дерева классификации Mdl.

label = predict(Mdl,X,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар. Для примера можно задать обрезку Mdl на конкретный уровень перед предсказанием меток.

[label,score,node,cnum] = predict(___) использует любой входной параметр в предыдущих синтаксисах и дополнительно возвращает:

  • Матрица классификационных оценок (score), указывающий вероятность того, что метка происходит от определенного класса. Для деревьев классификации счетов являются апостериорными вероятностями. Для каждого наблюдения в X, предсказанная метка класса соответствует минимальной ожидаемой стоимости неправильной классификации среди всех классов.

  • Вектор предсказанных чисел узлов для классификации (node).

  • Вектор предсказанного числа классов для классификации (cnum).

Входные параметры

расширить все

Обученное дерево классификации, заданное как ClassificationTree или CompactClassificationTree объект модели. То есть Mdl является обученной классификационной моделью, возвращенной fitctree или compact.

Данные предиктора, которые будут классифицированы, заданные как числовая матрица или таблица.

Каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной переменной.

  • Для числовой матрицы:

    • Переменные, составляющие столбцы X должен иметь тот же порядок, что и переменные предиктора, которые обучали Mdl.

    • Если вы тренировались Mdl использование таблицы (для примера, Tbl), затем X может быть числовой матрицей, если Tbl содержит все числовые переменные предиктора. Для лечения числовых предикторов в Tbl как категориальный во время обучения, идентифицируйте категориальные предикторы, используя CategoricalPredictors Аргумент пары "имя-значение" из fitctree. Если Tbl содержит неоднородные переменные предиктора (для примера, числовых и категориальных типов данных) и X является числовой матрицей, тогда predict выдает ошибку.

  • Для таблицы:

    • predict не поддерживает многополюсные переменные или массивы ячеек, отличные от массивов ячеек векторов символов.

    • Если вы тренировались Mdl использование таблицы (для примера, Tbl), затем все переменные предиктора в X должны иметь те же имена переменных и типы данных, что и обученные Mdl (хранится в Mdl.PredictorNames). Однако порядок столбцов X не должен соответствовать порядку столбцов Tbl. Tbl и X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.), но predict игнорирует их.

    • Если вы тренировались Mdl используя числовую матрицу, затем имена предикторов в Mdl.PredictorNames и соответствующие имена переменных предиктора в X должно быть то же самое. Чтобы задать имена предикторов во время обучения, смотрите PredictorNames Аргумент пары "имя-значение" из fitctree. Все переменные предиктора в X должны быть числовыми векторами. X может содержать дополнительные переменные (переменные отклика, веса наблюдений и т.д.), но predict игнорирует их.

Типы данных: table | double | single

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Уровень обрезки, заданный как разделенная разделенными запятой парами, состоящая из 'Subtrees' и вектор неотрицательных целых чисел в порядке возрастания или 'all'.

Если вы задаете вектор, то все элементы должны быть как минимум 0 и самое большее max(Mdl.PruneList). 0 указывает полное, несрезанное дерево и max(Mdl.PruneList) указывает полностью обрезанное дерево (т.е. только корневой узел).

Если вы задаете 'all', затем predict работает со всеми поддеревьями (т.е. со всей последовательностью обрезки). Эта спецификация эквивалентна использованию 0:max(Mdl.PruneList).

predict черносливы Mdl каждому уровню, указанному в Subtrees, а затем оценивает соответствующие выходные аргументы. Размер Subtrees определяет размер некоторых выходных аргументов.

Для вызова Subtrees, свойства PruneList и PruneAlpha от Mdl должно быть непустым. Другими словами, расти Mdl путем установки 'Prune','on', или путем обрезки Mdl использование prune.

Пример: 'Subtrees','all'

Типы данных: single | double | char | string

Выходные аргументы

расширить все

Предсказанные метки классов, возвращенные как вектор или массив. Каждая запись label соответствует классу с минимальными ожидаемыми затратами для соответствующей строки X.

Предположим Subtrees - числовой вектор, содержащий T элементы (для 'all', см. Subtrees), и X имеет N строки.

  • Если тип данных отклика char и:

    • T = 1, затем label - символьная матрица, содержащая N строки. Каждая строка содержит предсказанную метку, произведенную поддеревом Subtrees.

    • T > 1, затем label является N-by- T массив ячеек.

  • В противном случае label является N-by- T массив, имеющий совпадающий тип данных, что и ответ. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)

В двух последних случаях столбец j от label содержит вектор предсказанных меток, произведенных поддерево Subtrees (j).

Апостериорные вероятности, возвращенные как числовая матрица размера N-by- K, где N количество наблюдений (строк) в X, и K количество классов (в Mdl.ClassNames). score(i,j) - апостериорная вероятность того, что строка i от X является классом j.

Если Subtrees имеет T элементы, и X имеет N строки, затем score является N-by- K-by- T массив, и node и cnum являются N-by- T матрицы.

Номера узлов для предсказанных классов, возвращенные как числовой вектор. Каждая запись соответствует предсказанному узлу в Mdl для соответствующей строки X.

Номера классов, соответствующие предсказанному labels, возвращенный как числовой вектор. Каждая запись cnum соответствует предсказанному числу классов для соответствующей строки X.

Примеры

расширить все

Исследуйте предсказания на несколько строк в наборе данных, оставшемся вне обучения.

Загрузите набор данных радужки Фишера.

load fisheriris

Разделите данные на наборы для обучения (50%) и валидации (50%).

n = size(meas,1);
rng(1) % For reproducibility
idxTrn = false(n,1);
idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices
idxVal = idxTrn == false;                  % Validation set logical indices

Создайте дерево классификации с помощью набора обучающих данных.

Mdl = fitctree(meas(idxTrn,:),species(idxTrn));

Спрогнозируйте метки для данных валидации. Подсчитайте количество неправильно классифицированных наблюдений.

label = predict(Mdl,meas(idxVal,:));
label(randsample(numel(label),5)) % Display several predicted labels
ans = 5x1 cell
    {'setosa'    }
    {'setosa'    }
    {'setosa'    }
    {'virginica' }
    {'versicolor'}

numMisclass = sum(~strcmp(label,species(idxVal)))
numMisclass = 3

Программа неправильно классифицирует три несовпадающих по выборке наблюдения.

Загрузите набор данных радужки Фишера.

load fisheriris

Разделите данные на наборы для обучения (50%) и валидации (50%).

n = size(meas,1);
rng(1) % For reproducibility
idxTrn = false(n,1);
idxTrn(randsample(n,round(0.5*n))) = true; % Training set logical indices
idxVal = idxTrn == false;                  % Validation set logical indices

Создайте дерево классификации с помощью набора обучающих данных, а затем просмотрите его.

Mdl = fitctree(meas(idxTrn,:),species(idxTrn));
view(Mdl,'Mode','graph')

Figure Classification tree viewer contains an axes and other objects of type uimenu, uicontrol. The axes contains 18 objects of type line, text.

Получившееся дерево имеет четыре уровня.

Оцените апостериорные вероятности для тестового набора с помощью поддеревьев, обрезанных до уровней 1 и 3.

[~,Posterior] = predict(Mdl,meas(idxVal,:),'SubTrees',[1 3]);
Mdl.ClassNames
ans = 3x1 cell
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Posterior(randsample(size(Posterior,1),5),:,:),...
    % Display several posterior probabilities
ans = 
ans(:,:,1) =

    1.0000         0         0
    1.0000         0         0
    1.0000         0         0
         0         0    1.0000
         0    0.8571    0.1429


ans(:,:,2) =

    0.3733    0.3200    0.3067
    0.3733    0.3200    0.3067
    0.3733    0.3200    0.3067
    0.3733    0.3200    0.3067
    0.3733    0.3200    0.3067

Элементы Posterior являются апостериорными вероятностями классов:

  • Строки соответствуют наблюдениям в наборе валидации.

  • Столбцы соответствуют классам, перечисленным в Mdl.ClassNames.

  • Страницы соответствуют поддеревьям.

Поддерево, обрезанное до уровня 1, более уверено в своих предсказаниях, чем поддерево, обрезанное до уровня 3 (то есть корневого узла).

Подробнее о

расширить все

Алгоритмы

predict генерирует предсказания путем следования ветвям Mdl пока он не достигнет конечного узла или отсутствующего значения. Если predict достигает листового узла, он возвращает классификацию этого узла.

Если predict достигает узла с отсутствующим значением для предиктора, его поведение зависит от настройки Surrogate Пара "имя-значение", когда fitctree создает Mdl.

  • Surrogate = 'off' (по умолчанию) - predict возвращает метку с наибольшим количеством обучающих выборок, которые достигают узла.

  • Surrogate = 'on'predict использует лучшее суррогатное разделение в узле. Если все суррогатные разделенные переменные с положительными predictive measure of association отсутствуют, predict возвращает метку с наибольшим количеством обучающих выборок, которые достигают узла. Для определения смотрите Прогнозирующую Меру Ассоциации.

Альтернативная функциональность

Блок Simulink

Чтобы интегрировать предсказание модели дерева классификации в Simulink®можно использовать блок ClassificationTree Predict в библиотеке Statistics and Machine Learning Toolbox™ или MATLAB® Функциональный блок с predict функция. Для примеров смотрите Предсказание меток классов с использованием блока ClassificationTree Predict и Предсказание меток классов с использованием блока MATLAB function.

При принятии решения о том, какой подход использовать, примите к сведению следующее:

  • Если вы используете библиотечный блок Statistics and Machine Learning Toolbox, можно использовать Fixed-Point Tool (Fixed-Point Designer) для преобразования модели с плавающей точкой в фиксированную точку.

  • Поддержка массивов переменного размера должна быть включена для блока MATLAB Function с predict функция.

  • Если вы используете блок MATLAB Function, можно использовать функции MATLAB для предварительной обработки или постобработки до или после предсказаний в том же блоке MATLAB Function.

Расширенные возможности

.
Введенный в R2011a