Предскажите метки с помощью 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
Вторые и третьи строки счета и матриц стоимости имеют двоичные значения, что означает, что у всех пяти самых близких соседей средних и максимальных цветочных измерений есть идентичные классификации.
mdl
— k - самая близкая соседняя модель классификатораClassificationKNN
k-nearest граничат с моделью классификатора, заданной как объект 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
метка
Предсказанные метки классаПредсказанный класс маркирует для наблюдений (строки) в 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: истинная стоимость 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)
где
K является количеством классов.
апостериорная вероятность класса i для наблюдения Xnew (n).
истинная misclassification стоимость классификации наблюдения как j, когда его истинным классом является i.
Эта функция полностью поддерживает "высокие" массивы. Для получения дополнительной информации смотрите Длинные массивы (MATLAB).
Указания и ограничения по применению:
Используйте saveCompactModel
, loadCompactModel
и codegen
, чтобы сгенерировать код для функции predict
. Сохраните обученную модель при помощи saveCompactModel
. Задайте функцию точки входа, которая загружает сохраненную модель при помощи loadCompactModel
и вызывает функцию predict
. Затем используйте codegen
, чтобы сгенерировать код для функции точки входа.
Эта таблица содержит примечания об аргументах predict
. Аргументы, не включенные в эту таблицу, полностью поддержаны.
Аргумент | Примечания и ограничения |
---|---|
mdl |
|
X |
|
Для получения дополнительной информации смотрите Введение в Генерацию кода.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.