Прогнозирование меток с использованием 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 классифицирует путем минимизации ожидаемых затрат на неправильную классификацию:
C (y' j),
где:
^ - прогнозируемая классификация.
K - количество классов.
j 'x) - задняя вероятность класса 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является
=j∑i∈nbdW (i).
Здесь = j1 когда mdl.Y(i) = j, и 0 в противном случае.
С классификацией KNN связаны две затраты: истинная стоимость неправильной классификации по классам и ожидаемая стоимость неправильной классификации по наблюдениям.
Можно установить истинную стоимость неправильной классификации для класса с помощью 'Cost' аргумент пары имя-значение при выполнении fitcknn. Стоимость Cost(i,j) - затраты на классификацию наблюдения по классу j если его истинный класс 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около-Kсреди прочих мероприятий. Каждая строка cost матрица содержит ожидаемую (среднюю) стоимость классификации наблюдения в каждом из K классы. cost(n,j) является
j' i),
где
K - количество классов.
n)) - задняя вероятность класса i для наблюдения Xnew (n).
) - истинная стоимость неправильной классификации при классификации наблюдения как j, когда его истинным классом является i.
Эта функция полностью поддерживает массивы tall. Дополнительные сведения см. в разделе Массивы Tall.
Примечания и ограничения по использованию:
Использовать saveLearnerForCoder, loadLearnerForCoder, и codegen (Кодер MATLAB) для создания кода для predict функция. Сохранение обучаемой модели с помощью saveLearnerForCoder. Определение функции точки входа, которая загружает сохраненную модель с помощью loadLearnerForCoder и вызывает predict функция. Затем использовать codegen для создания кода для функции точки входа.
Чтобы создать код C/C + + с одной точностью для прогнозирования, укажите аргумент имя-значение'DataType','single' при вызове loadLearnerForCoder функция.
Эта таблица содержит примечания о аргументах predict. Аргументы, не включенные в эту таблицу, полностью поддерживаются.
| Аргумент | Примечания и ограничения |
|---|---|
mdl |
|
X |
|
Дополнительные сведения см. в разделе Введение в создание кода.
Эта функция полностью поддерживает массивы графических процессоров. Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Эта функция поддерживает объекты модели, оснащенные входными аргументами графического процессора.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.