predict

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

Описание

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

пример

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

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

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

Примеры

свернуть все

Создайте классификатор k - ближайших соседей для ирисовых данных Фишера, где 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
    {'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 - ближайших соседей в виде 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^=argminy=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|xnew)=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- 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