k-ближайшая соседняя классификация
ClassificationKNN - модель классификации ближайшего соседа, в которой можно изменить метрику расстояния и число ближайших соседей. Потому что ClassificationKNN классификатор хранит учебные данные, модель можно использовать для вычисления прогнозов повторного замещения. Либо используйте модель для классификации новых наблюдений с помощью predict способ.
Создать ClassificationKNN модель с использованием fitcknn.
BreakTies - Алгоритм обвязки'smallest' (по умолчанию) | 'nearest' | 'random'Алгоритм разрыва соединения, используемый predict если несколько классов имеют одинаковую наименьшую стоимость, заданную как одно из следующих значений:
'smallest' - использовать наименьший индекс среди связанных групп.
'nearest' - Используйте класс с ближайшим соседом среди связанных групп.
'random' - Использовать случайный тайбрейкер среди связанных групп.
По умолчанию связи возникают, когда несколько классов имеют одинаковое количество ближайших точек среди 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 если его истинный класс 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' | log (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' | 2x – 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 | Значения Шапли |
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 находит все точки в пределах фиксированного расстояния. Эти функции можно использовать для классификации, как показано в разделе Классификация данных запроса. Если требуется выполнить классификацию, используйте ClassificationKNN модели могут быть более удобными, поскольку вы можете обучить классификатор за один шаг (используя fitcknn) и классифицировать в других шагах (используя predict). Можно также обучить модель классификации k-ближайших соседей, используя одну из опций перекрестной проверки в вызове fitcknn. В этом случае fitcknn возвращает ClassificationPartitionedModel объект модели с перекрестной проверкой.
Примечания и ограничения по использованию:
predict функция поддерживает генерацию кода.
При обучении модели классификации k-ближайших соседей с помощью fitcknn, применяются следующие ограничения.
Значение 'Distance' аргумент пары имя-значение не может быть пользовательской функцией расстояния.
Значение 'DistanceWeight' аргумент пары имя-значение может быть пользовательской функцией веса расстояния, но не может быть анонимной функцией.
Значение 'ScoreTransform' аргумент пары имя-значение не может быть анонимной функцией.
Дополнительные сведения см. в разделе Введение в создание кода.
Примечания и ограничения по использованию:
Следующие функции объекта полностью поддерживают массивы GPU:
Следующие функции объектов поддерживают объекты модели, оснащенные входными аргументами массива GPU:
Дополнительные сведения см. в разделе Запуск функций MATLAB на графическом процессоре (панель инструментов параллельных вычислений).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.