predict

Предскажите метки с помощью дерева классификации

Описание

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

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

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

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

  • Вектор из предсказанных чисел узла для классификации (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 не должен соответствовать порядку следования столбцов Tbltbl и X может содержать дополнительные переменные (переменные отклика, веса наблюдения, и т.д.), но predict игнорирует их.

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

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

Аргументы name-value

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

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

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

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

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

Вызвать Subtrees, свойства PruneList и PruneAlpha из Mdl mustBeNonempty. Другими словами, вырастите 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- T cellArray.

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

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

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

Если Subtrees имеет T элементы и X имеет N строки, затем score N- K- T массив и node и cnum N- 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 object and other objects of type uimenu, uicontrol. The axes object 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 (i.e., корневой узел).

Больше о

развернуть все

Алгоритмы

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 функция. Для примеров смотрите, Предсказывают, что Класс Маркирует Using ClassificationTree Predict Block и Predict Class Labels Using MATLAB Function Block.

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

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

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

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

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

Введенный в R2011a