предсказать

Предскажите метки с помощью k - самая близкая соседняя модель классификации

Синтаксис

label = predict(mdl,X)
[label,score,cost] = predict(mdl,X)

Описание

label = predict(mdl,X) возвращает вектор предсказанных меток класса для данных о предикторе в таблице или матричном X, на основе обученного k - самая близкая соседняя модель mdl классификации. Смотрите Предсказанную Метку Класса.

пример

[label,score,cost] = predict(mdl,X) также возвращается:

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

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

Примеры

свернуть все

Создайте соседний классификатор k-nearest для ирисовых данных Фишера, где k = 5. Оцените некоторые образцовые прогнозы на новых данных.

Загрузите ирисовый набор данных Фишера.

load fisheriris
X = meas;
Y = species;

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

mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1);

Предскажите классификации для цветов с минимумом, средним значением и максимальными характеристиками.

Xnew = [min(X);mean(X);max(X)];
[label,score,cost] = predict(mdl,Xnew)
label = 3x1 cell array
    {'versicolor'}
    {'versicolor'}
    {'virginica' }

score = 3×3

    0.4000    0.6000         0
         0    1.0000         0
         0         0    1.0000

cost = 3×3

    0.6000    0.4000    1.0000
    1.0000         0    1.0000
    1.0000    1.0000         0

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

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

свернуть все

k-nearest граничат с моделью классификатора, заданной как объект ClassificationKNN.

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

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

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

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

    • Если вы обучаете mdl с помощью таблицы (например, Tbl), то X может быть числовой матрицей, если Tbl содержит все числовые переменные прогноза. k - самая близкая соседняя классификация требует гомогенных предикторов. Поэтому, чтобы обработать все числовые предикторы в Tbl как категориальные во время обучения, установите 'CategoricalPredictors','all', когда вы обучите использование fitcknn. Если Tbl содержит неоднородные предикторы (например, типы числовых и категориальных данных), и X является числовой матрицей, то predict выдает ошибку.

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

    • predict не поддерживает многостолбцовые переменные и массивы ячеек кроме массивов ячеек из символьных векторов.

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

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

Если вы устанавливаете 'Standardize',true в fitcknn обучать mdl, то программное обеспечение стандартизирует столбцы X с помощью соответствующих средних значений в mdl.Mu и стандартных отклонений в mdl.Sigma.

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

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

свернуть все

Предсказанный класс маркирует для наблюдений (строки) в X, возвращенном как категориальный массив, символьный массив, логический вектор, вектор числовых значений или массив ячеек из символьных векторов. label имеет длину, равную количеству строк в X. Метка является классом с минимальной ожидаемой стоимостью. Смотрите Предсказанную Метку Класса.

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

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

Ожидаемые затраты классификации, возвращенные как числовая матрица размера n-by-K. n является количеством наблюдений (строки) в X, и K является количеством классов (в mdl.ClassNames). cost(i,j) является стоимостью классификации строки i X как класс j в mdl.ClassNames. Смотрите Ожидаемую Стоимость.

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

Алгоритмы

свернуть все

Предсказанная метка класса

predict классифицирует путем минимизации ожидаемой стоимости классификации:

y^=аргументminy=1,...,Kj=1KP^(j|x)C(y|j),

где

  • y^ предсказанная классификация.

  • K является количеством классов.

  • P^(j|x) апостериорная вероятность класса j для наблюдения x.

  • C(y|j) стоимость классификации наблюдения как y, когда его истинным классом является j.

Апостериорная вероятность

Считайте вектор (точка единого запроса) xnew и моделью mdl.

  • k является количеством самых близких соседей, используемых в прогнозе, mdl.NumNeighbors.

  • nbd(mdl,xnew) задает k самые близкие соседи xnew в mdl.X.

  • Y(nbd) задает классификации точек в nbd(mdl,xnew), а именно, mdl.Y(nbd).

  • W(nbd) задает веса точек в nbd(mdl,xnew).

  • prior задает уголовное прошлое классов в mdl.Y.

Если модель содержит вектор априорных вероятностей, то веса наблюдения W нормированы классом, чтобы суммировать к уголовному прошлому. Этот процесс может включить вычисление для точки xnew, потому что веса могут зависеть от расстояния от xnew до точек в mdl.X.

Апостериорная вероятность p (j |xnew)

p(j|xновый)=inbdW(i)1Y(X(i))=jinbdW(i).

Здесь, 1Y(X(i))=j 1 когда   mdl.Y(i) = j и 0 в противном случае.

Истинная стоимость Misclassification

Два затрат сопоставлены с классификацией KNN: истинная стоимость misclassification в классе и ожидаемом misclassification стоится на наблюдение.

Можно установить истинную стоимость misclassification в классе при помощи аргумента пары "имя-значение" 'Cost', когда вы запускаете fitcknn. Cost(i,j) значения является стоимостью классификации наблюдения в класс j, если его истинным классом является i. По умолчанию, Cost(i,j) = 1, если i ~= j и Cost(i,j) = 0, если i = j. Другими словами, стоимостью является 0 для правильной классификации и 1 для неправильной классификации.

Ожидаемая стоимость

Два затрат сопоставлены с классификацией KNN: истинная стоимость misclassification в классе и ожидаемом misclassification стоится на наблюдение. Третий вывод predict является ожидаемой стоимостью misclassification на наблюдение.

Предположим, что у вас есть наблюдения Nobs, что вы хотите классифицировать с обученным классификатором mdl, и у вас есть классы K. Вы помещаете наблюдения в матричный Xnew с одним наблюдением на строку. Команда

[label,score,cost] = predict(mdl,Xnew)

возвращает матричный cost размера Nobs-by-K, среди других выходных параметров. Каждая строка матрицы cost содержит ожидаемую (среднюю) стоимость классификации наблюдения в каждый из классов K. cost(n,j)

i=1KP^(i|Xnew(n))C(j|i),

где

  • K является количеством классов.

  • P^(i|Xnew(n)) апостериорная вероятность класса i для наблюдения Xnew (n).

  • C(j|i) истинная misclassification стоимость классификации наблюдения как j, когда его истинным классом является i.

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

Представленный в R2012a