Спрогнозируйте метки, используя k-ближайшую соседнюю классификационную модель
возвращает вектор предсказанных меток классов для данных предиктора в таблице или матрице label
= predict(mdl
,X
)X
, на основе обученной k - ближайшей соседней классификационной модели mdl
. См. Предсказанная метка класса.
[
также возвращает:label
,score
,cost
]
= predict(mdl
,X
)
Матрица классификационных оценок (score
), указывающий вероятность того, что метка происходит от определенного класса. Для k-ближайшего соседа счетов являются апостериорными вероятностями. См. Апостериорная вероятность.
Матрица ожидаемых классификационных затрат (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
Вторая и третья строки матриц счета и затрат имеют двоичные значения, что означает, что все пять ближайших соседей среднего и максимального измерений цветов имеют одинаковые классификации.
mdl
- k - модель классификатора по ближайшему соседуClassificationKNN
объектk-ближайших соседей классификатор модели, заданный как ClassificationKNN
объект.
X
- Данные предиктора, которые будут классифицированыДанные предиктора, которые будут классифицированы, заданные как числовая матрица или таблица.
Каждая строка 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
label
- Предсказанные метки классовПредсказанные метки классов для наблюдений (строки) в X
, возвращенный как категориальный массив, символьный массив, логический вектор, вектор числовых значений или массив ячеек векторов символов. label
имеет длину, равную количеству строк в X
. Метка является классом с минимальной ожидаемой стоимостью. См. Предсказанная метка класса.
score
- Предсказанные счета классов или апостериорные вероятностиПредсказанные счета классов или апостериорные вероятности, возвращенные как числовая матрица размера n -by- K. n - количество наблюдений (строк) в X
, и K количество классов (в mdl.ClassNames
). score(i,j)
- апостериорная вероятность того, что наблюдение i
в X
является классом j
в mdl.ClassNames
. См. Апостериорная вероятность.
Типы данных: single
| double
cost
- Ожидаемые классификационные затратыОжидаемые классификационные затраты, возвращенные как числовая матрица размера n -by- K. n - количество наблюдений (строк) в X
, и K количество классов (в mdl.ClassNames
). cost(i,j)
- стоимость классификации строки i
от X
как класс j
в mdl.ClassNames
. См. «Ожидаемые затраты».
Типы данных: single
| double
predict
классифицирует путем минимизации ожидаемых затрат на неправильную классификацию:
где:
- предсказанная классификация.
K - количество классов.
- апостериорная вероятность j классов для x наблюдений.
- стоимость классификации наблюдения как 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
является
Вот, является 1
когда mdl.Y(i) = j
, и 0
в противном случае.
Две стоимости связаны с классификацией KNN: истинная стоимость неправильной классификации для каждого класса и ожидаемая стоимость неправильной классификации для каждого наблюдения.
Можно задать истинные затраты на неправильную классификацию по классам с помощью 'Cost'
аргумент пары "имя-значение" при запуске fitcknn
. Значение Cost(i,j)
- стоимость классификации наблюдений в классы j
если его класс true i
. По умолчанию Cost(i,j) = 1
если i ~= j
, и Cost(i,j) = 0
если i = j
. Другими словами, стоимость 0
для правильной классификации и 1
для неправильной классификации.
Две стоимости связаны с классификацией KNN: истинная стоимость неправильной классификации для каждого класса и ожидаемая стоимость неправильной классификации для каждого наблюдения. Третий выход predict
- ожидаемая стоимость неправильной классификации за наблюдение.
Предположим, у вас есть Nobs
наблюдения, которые необходимо классифицировать с помощью обученного классификатора mdl
, и у вас есть K
классы. Наблюдения помещаются в матрицу Xnew
с одним наблюдением за строкой. Команда
[label,score,cost] = predict(mdl,Xnew)
возвращает матрицу cost
размера Nobs
-by- K
, среди других выходов. Каждая строка cost
матрица содержит ожидаемые (средние) затраты на классификацию наблюдений в каждый из K
классы. cost(n,j)
является
где
K - количество классов.
- апостериорная вероятность i классов для Xnew наблюдений (n).
- истинная стоимость неправильной классификации при классификации наблюдения как j, когда его истинный класс i.
Эта функция полностью поддерживает длинные массивы. Для получения дополнительной информации см. Раздел «Длинные массивы»
Указания и ограничения по применению:
Использовать saveLearnerForCoder
, loadLearnerForCoder
, и codegen
(MATLAB Coder), чтобы сгенерировать код для predict
функция. Сохраните обученную модель при помощи saveLearnerForCoder
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadLearnerForCoder
и вызывает predict
функция. Затем используйте codegen
чтобы сгенерировать код для функции точки входа.
Чтобы сгенерировать одноточный код C/C + + для предсказания, задайте аргумент
имя-значение 'DataType','single'
когда вы вызываете loadLearnerForCoder
функция.
Эта таблица содержит примечания к аргументам predict
. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
Аргумент | Примечания и ограничения |
---|---|
mdl |
|
X |
|
Для получения дополнительной информации смотрите Введение в генерацию кода.
Эта функция полностью поддерживает массивы GPU. Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
Эта функция поддерживает объекты модели, оснащенные входными параметрами массива GPU.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.