k- соседняя классификация
ClassificationKNN
является моделью классификации ближайшего соседа, в которой можно изменить и метрику расстояния и количество самых близких соседей. Поскольку классификатор ClassificationKNN
хранит данные тренировки, можно использовать модель, чтобы вычислить прогнозы перезамены. Также используйте модель, чтобы классифицировать новые наблюдения с помощью метода predict
.
Создайте модель ClassificationKNN
с помощью fitcknn
.
BreakTies
— Повреждающий связь алгоритм'smallest'
(значение по умолчанию) | 'nearest'
| 'random'
Повреждающий связь алгоритм, используемый predict
, когда несколько классов имеют ту же самую маленькую стоимость, заданную как одно из следующего:
'smallest'
— Используйте самый маленький индекс среди связанных групп.
самый близкий
Используйте класс с самым близким соседом среди связанных групп.
'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' | Один минус коэффициент Jaccard, процент ненулевых координат, которые отличаются. |
'mahalanobis' | Расстояние Mahalanobis, вычисленное использование положительной определенной ковариационной матрицы C . Значение по умолчанию C является матрицей выборочной ковариации X , как вычислено nancov(X) . Чтобы задать различное значение для C , установите свойство DistParameter mdl с помощью записи через точку. |
'minkowski' | Расстояние Минковскего. Экспонентой по умолчанию является 2 . Чтобы задать различную экспоненту, установите свойство DistParameter mdl с помощью записи через точку. |
'seuclidean' | Стандартизированное Евклидово расстояние. Каждое координатное различие между X и точкой запроса масштабируется, означая разделенный на значение шкалы S . Значение по умолчанию S является стандартным отклонением, вычисленным из X , S = nanstd(X) . Чтобы задать другое значение для 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/distance2 |
| 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 th наименьшее расстояние, заданное как false
или true
. Если IncludeTies
является true
, predict
включает всех этих соседей. В противном случае, использование predict
точно соседи k (см. свойство BreakTies
).
Изменение IncludeTies
с помощью записи через точку: mdl.IncludeTies = newIncludeTies
.
Типы данных: логический
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
— Стоимость misclassificationСтоимость misclassification точки, заданной как квадратная матрица. 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
, заданную как структура.
Типы данных: struct
\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
— Строки используются в подборе кривой[]
| логический векторЭто свойство доступно только для чтения.
Строки исходных данных X
, используемый в подборе кривой модели ClassificationKNN
, заданной как логический вектор. Это свойство пусто, если все строки используются.
Типы данных: логический
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' | 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 | Перекрестные подтвержденные k-nearest граничат с классификатором |
edge | Ребро k-nearest граничит с классификатором |
loss | Потеря k-nearest граничит с классификатором |
margin | Поле k-nearest граничит с классификатором |
predict | Предскажите метки с помощью k-nearest соседнюю модель классификации |
resubEdge | Ребро k-nearest граничит с классификатором перезаменой |
resubLoss | Потеря k-nearest граничит с классификатором перезаменой |
resubMargin | Поле k-nearest граничит с классификатором перезаменой |
resubPredict | Предскажите метки перезамены соседнего классификатора k-nearest |
Обучите соседний классификатор k-nearest ирисовым данным Фишера, где 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 array
{'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
, следующие ограничения применяются.
Значение входного параметра меток класса (Y
) не может быть категориальным массивом.
Генерация кода не поддерживает категориальные предикторы. Вы не можете снабдить данными тренировки в таблице, которая содержит логический вектор, символьный массив, категориальный массив, массив строк или массив ячеек из символьных векторов. Кроме того, вы не можете использовать аргумент пары "имя-значение" 'CategoricalPredictors'
.
Чтобы включать категориальные предикторы в модель, предварительно обработайте категориальные предикторы при помощи dummyvar
прежде, чем соответствовать модели.
Значение аргумента пары "имя-значение" 'ClassNames'
не может быть категориальным массивом.
Значение аргумента пары "имя-значение" 'Distance'
не может быть пользовательской функцией расстояния.
Значение аргумента пары "имя-значение" 'DistanceWeight'
может быть пользовательской функцией веса расстояния, но это не может быть анонимная функция.
Значение аргумента пары "имя-значение" 'ScoreTransform'
не может быть анонимной функцией.
Для получения дополнительной информации смотрите Введение в Генерацию кода.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.