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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 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 array
    {'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')

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

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

[~,Posterior] = predict(Mdl,meas(idxVal,:),'SubTrees',[1 3]);
Mdl.ClassNames
ans = 3x1 cell array
    {'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 возвращает метку с наибольшим числом учебных выборок, которые достигают узла. Для определения смотрите Прогнозирующую Меру Ассоциации.

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

Введенный в R2011a