k - ближайшая соседняя классификация
ClassificationKNN
- модель классификации по ближайшему соседу, в которой можно изменить как метрику расстояния, так и количество ближайших соседей. Потому что ClassificationKNN
классификатор хранит обучающие данные, можно использовать модель для вычисления предсказаний реституции. Кроме того, используйте модель для классификации новых наблюдений с помощью predict
способ.
Создайте ClassificationKNN
модель с использованием fitcknn
.
BreakTies
- Алгоритм разрыва связей'smallest'
(по умолчанию) | 'nearest'
| 'random'
Алгоритм разрыва связей, используемый predict
если несколько классов имеют наименьшую стоимость, заданную как один из следующих:
'smallest'
- Используйте наименьший индекс среди связанных групп.
'nearest'
- Используйте класс с ближайшим соседом среди связанных групп.
'random'
- Используйте случайный tiebreaker среди связанных групп.
По умолчанию связи возникают, когда несколько классов имеют одинаковое количество ближайших точек среди k ближайших соседей. BreakTies
применяется, когда IncludeTies
является false
.
Изменение BreakTies
использование записи через точку: mdl.BreakTies = newBreakTies
.
Distance
- Метрика расстояния'cityblock'
| 'chebychev'
| 'correlation'
| 'cosine'
| 'euclidean'
| указатель на функцию |...Метрика расстояния, заданная как вектор символов или указатель на функцию. Допустимые значения зависят от NSMethod
свойство.
NSMethod | Метрика расстояния разрешена |
---|---|
'exhaustive' | Любая метрика расстояния ExhaustiveSearcher |
'kdtree' | 'cityblock' , 'chebychev' , 'euclidean' , или 'minkowski' |
В следующей таблице перечислены ExhaustiveSearcher
метрики расстояния.
Значение | Описание |
---|---|
'cityblock' | Расстояние между блоками. |
'chebychev' | Расстояние Чебычева (максимальное различие координат). |
'correlation' | Один минус выборка линейной корреляции между наблюдениями (рассматривается как последовательности значений). |
'cosine' | Один минус косинус включенного угла между наблюдениями (обрабатывается как векторы). |
'euclidean' | Евклидово расстояние. |
'hamming' | Расстояние Хемминга, процент разных координат. |
'jaccard' | Один минус коэффициент Жаккара, процент ненулевых координат, которые различаются. |
'mahalanobis' | Расстояние Махаланобиса, вычисленное с помощью положительной определенной ковариационной матрицы C . Значение по умолчанию C - выборочная ковариационная матрица X , в расчете на cov(X,'omitrows') . Чтобы задать другое значение для C , установите DistParameter свойство mdl использование записи через точку. |
'minkowski' | Расстояние Минковского. Экспонента по умолчанию 2 . Чтобы задать другую экспоненту, задайте DistParameter свойство mdl использование записи через точку. |
'seuclidean' | Стандартизированное евклидово расстояние. Каждое различие координат между X и точка запроса масштабируется, что означает деление на значение шкалы S . Значение по умолчанию S - стандартное отклонение, вычисленное из X , S = std(X,'omitnan') . Чтобы задать другое значение для S , установите DistParameter свойство mdl использование записи через точку. |
'spearman' | Один минус выборки корреляции ранга Спирмана между наблюдениями (рассматриваются как последовательности значений). |
|
Указатель на функцию расстояния. function D2 = distfun(ZI,ZJ) % calculation of distance ...
|
Для получения дополнительной информации см. «Метрики расстояния».
Изменение Distance
использование записи через точку: mdl.Distance = newDistance
.
Если NSMethod
является 'kdtree'
Для изменения можно использовать запись через точку Distance
только для метрик 'cityblock'
, 'chebychev'
, 'euclidean'
, и 'minkowski'
.
Типы данных: char
| function_handle
DistanceWeight
- Функция взвешивания расстояний'equal'
| 'inverse'
| 'squaredinverse'
| указатель на функциюФункция взвешивания расстояния, заданная в качестве одного из значений в этой таблице.
Значение | Описание |
---|---|
'equal' | Без взвешивания |
'inverse' | Вес 1/расстояние |
'squaredinverse' | Вес 1/расстояние2 |
| fcn является функцией, которая принимает матрицу неотрицательных расстояний и возвращает матрицу того же размера, содержащую неотрицательные веса расстояний. Для примера, 'squaredinverse' эквивалентно @(d)d.^(–2) . |
Изменение DistanceWeight
использование записи через точку: mdl.DistanceWeight = newDistanceWeight
.
Типы данных: char
| function_handle
DistParameter
- Параметр для метрики расстоянияПараметр для метрики расстояния, заданный как одно из значений, описанных в этой таблице.
Метрика расстояния | Параметр |
---|---|
'mahalanobis' | Положительно определенная ковариационная матрица C |
'minkowski' | Показатель расстояния Минковского, положительной скалярной величины |
'seuclidean' | Вектор положительных значений шкалы с длиной, равной количеству столбцов X |
Для любой другой метрики расстояния значение DistParameter
должен быть []
.
Можно изменить DistParameter
использование записи через точку: mdl.DistParameter = newDistParameter
. Однако, если Distance
является 'mahalanobis'
или 'seuclidean'
, тогда вы не можете изменить DistParameter
.
Типы данных: single
| double
IncludeTies
- Флаг включения галстукаfalse
(по умолчанию) | true
Флаг включения галстука, указывающий, predict
ли включает все соседи, значения расстояния которых равны k-му наименьшему расстоянию, заданному как
false
или true
. Если IncludeTies
является true
, predict
включает всех этих соседей. В противном случае, predict
использует в точности k соседей (см. BreakTies
свойство).
Изменение IncludeTies
использование записи через точку: mdl.IncludeTies = newIncludeTies
.
Типы данных: logical
NSMethod
- Метод поиска по ближайшему соседу'kdtree'
| 'exhaustive'
Это свойство доступно только для чтения.
Метод поиска по ближайшему соседу, заданный как 'kdtree'
или 'exhaustive'
.
'kdtree'
- Создает и использует Kd-дерево для поиска ближайших соседей.
'exhaustive'
- Использует алгоритм исчерпывающего поиска. При предсказании класса новой точки xnew
программа вычисляет значения расстояния от всех точек в X
на xnew
найти ближайших соседей.
Значение по умолчанию 'kdtree'
когда X
имеет 10
или меньше столбцов, X
не разрежен, и метрика расстояния является 'kdtree'
тип. В противном случае значение по умолчанию является 'exhaustive'
.
NumNeighbors
- Количество ближайших соседейКоличество ближайших соседей в X
используется для классификации каждой точки во время предсказания, заданной как положительное целое значение.
Изменение NumNeighbors
использование записи через точку: mdl.NumNeighbors = newNumNeighbors
.
Типы данных: single
| double
CategoricalPredictors
- Категориальные индексы предиктора[]
| вектор положительных целых чиселЭто свойство доступно только для чтения.
Категориальные индексы предиктора, заданные как вектор положительных целых чисел. CategoricalPredictors
содержит значения индекса, соответствующие столбцам данных предиктора, которые содержат категориальные предикторы. Если ни один из предикторов не является категориальным, то это свойство пустое ([]
).
Типы данных: double
ClassNames
- Имена классов в обучающих Y
данных
Это свойство доступно только для чтения.
Имена классов в обучающих данных Y
с удаленными дубликатами, заданными как категориальный или символьный массив, логический или числовой вектор или массив ячеек векторов символов. ClassNames
имеет тот совпадающий тип данных что и Y
. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Типы данных: categorical
| char
| logical
| single
| double
| cell
Cost
- Стоимость неправильной классификацииСтоимость неправильной классификации точки, заданная как квадратная матрица. Cost(i,j)
- стоимость классификации точки в класс j
если его класс true i
(то есть строки соответствуют истинному классу, а столбцы - предсказанному классу). Порядок строк и столбцов в Cost
соответствует порядку классов в ClassNames
. Количество строк и столбцов в Cost
количество уникальных классов в ответе.
По умолчанию Cost(i,j) = 1
если i ~= j
, и Cost(i,j) = 0
если i = j
. Другими словами, стоимость 0
для правильной классификации и 1
для неправильной классификации.
Изменение Cost
матрица с использованием записи через точку: mdl.Cost = costMatrix
.
Типы данных: single
| double
ExpandedPredictorNames
- Расширенные имена предикторовЭто свойство доступно только для чтения.
Расширенные имена предикторов, заданные как массив ячеек из векторов символов.
Если модель использует кодировку для категориальных переменных, то ExpandedPredictorNames
включает имена, которые описывают расширенные переменные. В противном случае ExpandedPredictorNames
то же, что и PredictorNames
.
Типы данных: cell
ModelParameters
- Параметры, используемые в обучающих ClassificationKNN
Это свойство доступно только для чтения.
Параметры, используемые в обучении ClassificationKNN
модель, заданная как объект.
Mu
- Предиктор означаетЭто свойство доступно только для чтения.
Предиктор означает, заданный как числовой вектор длины numel(PredictorNames)
.
Если вы не стандартизируете mdl
при обучении модели используя fitcknn
, затем Mu
пуст ([]
).
Типы данных: single
| double
NumObservations
- Количество наблюденийЭто свойство доступно только для чтения.
Количество наблюдений, используемых при обучении ClassificationKNN
модель, заданная как положительный целочисленный скаляр. Это число может быть меньше, чем количество строк в обучающих данных, поскольку строки, содержащие NaN
значения не являются частью подгонки.
Типы данных: double
PredictorNames
- Имена переменных предиктораЭто свойство доступно только для чтения.
Имена переменных предиктора, заданные как массив ячеек из векторов символов. Имена переменных находятся в том же порядке, в котором они появляются в обучающих данных X
.
Типы данных: cell
Prior
- Априорные вероятности для каждого классаПредыдущие вероятности для каждого класса, заданные как числовой вектор. Порядок элементов в Prior
соответствует порядку классов в ClassNames
.
Добавление или изменение Prior
вектор с использованием записи через точку: mdl.Prior = priorVector
.
Типы данных: single
| double
ResponseName
- Имя переменной откликаЭто свойство доступно только для чтения.
Имя переменной отклика, заданное как вектор символов.
Типы данных: char
RowsUsed
- Строки, используемые в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных обучающих данных, используемых при подборе кривой ClassificationKNN
модель, заданная как логический вектор. Это свойство пустое, если используются все строки.
Типы данных: logical
ScoreTransform
- Преобразование счета'none'
(по умолчанию) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| указатель на функцию |...Преобразование счета, заданное как вектор символов или указатель на функцию.
В этой таблице представлены доступные векторы символов.
Значение | Описание |
---|---|
'doublelogit' | 1/(1 + e–2x) |
'invlogit' | журнал (x/( 1 - x)) |
'ismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равным 0 |
'logit' | 1/(1 + e–x) |
'none' или 'identity' | x (без преобразования) |
'sign' | -1 для x < 0 0 для x = 0 1 для x > 0 |
'symmetric' | 2 x – 1 |
'symmetricismax' | Устанавливает счет для класса с самым большим счетом равным 1 и устанавливает счета для всех других классов равной -1 |
'symmetriclogit' | 2/(1 + e–x) – 1 |
Для MATLAB® функция или функция, которую вы задаете, используйте указатель на функцию для преобразования счета. Указатель на функцию должен принять матрицу (исходные счета) и вернуть матрицу того же размера (преобразованные счета).
Изменение ScoreTransform
использование записи через точку: mdl.ScoreTransform = newScoreTransform
.
Типы данных: char
| function_handle
Sigma
- Стандартные отклонения предиктораЭто свойство доступно только для чтения.
Стандартные отклонения предиктора, заданные как числовой вектор длины numel(PredictorNames)
.
Если вы не стандартизируете переменные предиктора во время обучения, то Sigma
пуст ([]
).
Типы данных: single
| double
W
- Веса наблюденийЭто свойство доступно только для чтения.
Веса наблюдений, заданные как вектор неотрицательных значений с одинаковым числом строк, как Y
. Каждая запись в W
определяет относительную важность соответствующего наблюдения в Y
.
Типы данных: single
| double
X
- Нестандартные данные предиктораЭто свойство доступно только для чтения.
Нестандартные данные предиктора, заданные как числовая матрица. Каждый столбец X
представляет один предиктор (переменную), и каждая строка представляет одно наблюдение.
Типы данных: single
| double
Y
- Метки классовЭто свойство доступно только для чтения.
Метки класса, заданные как категориальный или символьный массив, логический или числовой вектор или массив ячеек из векторов символов. Каждое значение в Y
- наблюдаемая метка класса для соответствующей строки в X
.
Y
имеет тот совпадающий тип данных, что и данные в Y
используется для настройки модели. (Программа обрабатывает массивы строк как массивы ячеек векторов символов.)
Типы данных: single
| double
| logical
| char
| cell
| categorical
HyperparameterOptimizationResults
- Оптимизация гиперпараметров перекрестной валидацииBayesianOptimization
таблица | объектаЭто свойство доступно только для чтения.
Оптимизация гиперпараметров перекрестной валидации, заданная как BayesianOptimization
объект или таблица гиперпараметров и связанных значений. Это свойство непусто, когда 'OptimizeHyperparameters'
аргумент пары "имя-значение" не пуст, когда вы создаете модель используя fitcknn
. Значение зависит от настройки 'HyperparameterOptimizationOptions'
аргумент пары "имя-значение" при создании модели:
'bayesopt'
(по умолчанию) - Объект класса BayesianOptimization
'gridsearch'
или 'randomsearch'
- Таблица используемых гиперпараметров, наблюдаемых значений целевой функции (потери перекрестной валидации) и ранг наблюдений от самого низкого (лучшего) до самого высокого (худшего)
compareHoldout | Сравните точности двух классификационных моделей с помощью новых данных |
crossval | Перекрестная валидация модели машинного обучения |
edge | Ребро k - ближайший соседний классификатор |
gather | Сбор свойств модели машинного обучения с графический процессор |
lime | Локальные интерпретируемые модели-агностические объяснения (LIME) |
loss | Потеря k - ближайшего соседа классификатора |
margin | Запас k-ближайшего соседа классификатора |
partialDependence | Вычисление частичной зависимости |
plotPartialDependence | Создайте график частичной зависимости (PDP) и отдельные графики условного ожидания (ICE) |
predict | Спрогнозируйте метки, используя k-ближайшую соседнюю классификационную модель |
resubEdge | Ребро классификации реституции |
resubLoss | Потери по классификации реституции |
resubMargin | Классификационный запас для реституции |
resubPredict | Классификация обучающих данных с помощью обученного классификатора |
shapley | Значения Shapley |
testckfold | Сравните точности двух классификационных моделей путем повторной перекрестной валидации |
Обучите k-ближайших соседей для данных радужной оболочки глаза Фишера, где k, количество ближайших соседей в предикторах, равняется 5.
Загрузите данные радужки Фишера.
load fisheriris
X = meas;
Y = species;
X
является числовой матрицей, которая содержит четыре измерения лепестков для 150 ирисов. Y
- массив ячеек из векторов символов, который содержит соответствующие виды радужной оболочки.
Обучите классификатор 5 ближайших соседей. Стандартизируйте некатегориальные данные предиктора.
Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1)
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 Distance: 'euclidean' NumNeighbors: 5 Properties, Methods
Mdl
является обученным ClassificationKNN
классификатор, и некоторые его свойства появляются в Командном окне.
Для доступа к свойствам Mdl
, используйте запись через точку.
Mdl.ClassNames
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
Mdl.Prior
ans = 1×3
0.3333 0.3333 0.3333
Mdl.Prior
содержит класс априорных вероятностей, которые можно задать используя 'Prior'
аргумент пары "имя-значение" в fitcknn
. Порядок предшествующих вероятностей класса соответствует порядку классов в Mdl.ClassNames
. По умолчанию предыдущие вероятности являются соответствующими относительными частотами классов в данных.
Можно также сбросить предыдущие вероятности после обучения. Для примера установите предыдущие вероятности 0,5, 0,2 и 0,3 соответственно.
Mdl.Prior = [0.5 0.2 0.3];
Можно пройти Mdl
на predict
для маркировки новых измерений или crossval
для перекрестной проверки классификатора.
compact
функция уменьшает размер большинства классификационных моделей путем удаления свойств обучающих данных и любых других свойств, которые не требуются для предсказания меток новых наблюдений. Поскольку k-ближайшие соседние классификационные модели требуют всех обучающих данных для предсказания меток, вы не можете уменьшить размер ClassificationKNN
модель.
knnsearch
находит k - ближайшие соседи точек .rangesearch
находит все точки на фиксированном расстоянии. Можно использовать эти функции для классификации, как показано на Classify Query Data. Если вы хотите выполнить классификацию, то использование ClassificationKNN
модели могут быть более удобными, потому что вы можете обучить классификатор в один шаг (используя fitcknn
) и классифицировать в другие шаги (используя predict
). Кроме того, можно обучить k - ближайшую соседнюю модель классификации с помощью одной из опций перекрестной валидации в вызове fitcknn
. В этом случае, fitcknn
возвращает ClassificationPartitionedModel
перекрестно проверенный объект модели.
Указания и ограничения по применению:
predict
функция поддерживает генерацию кода.
Когда вы обучаете k - ближайшую соседнюю модель классификации при помощи fitcknn
, применяются следующие ограничения.
Значение 'Distance'
аргумент пары "имя-значение" не может быть пользовательской функцией расстояния.
Значение 'DistanceWeight'
аргумент пары "имя-значение" может быть пользовательской функцией веса расстояния, но не может быть анонимной функцией.
Значение 'ScoreTransform'
аргумент пары "имя-значение" не может быть анонимной функцией.
Для получения дополнительной информации смотрите Введение в генерацию кода.
Указания и ограничения по применению:
Следующие функции объекта полностью поддерживают массивы GPU:
Следующие функции объекта поддерживают объекты модели, оснащенные входными параметрами массива GPU:
Для получения дополнительной информации смотрите Запуск функций MATLAB на графическом процессоре (Parallel Computing Toolbox).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.