Классифицируйте данные с помощью самого близкого соседнего метода
knnclassify
был удален. Вместо этого используйте fitcknn
, чтобы соответствовать модели классификации knn
и классифицировать данные с помощью функции predict
объекта ClassificationKNN
.
Class
=
knnclassify(Sample
, Training
, Group
)
Class
=
knnclassify(Sample
, Training
, Group
, k
)
Class
=
knnclassify(Sample
, Training
, Group
, k
, distance
)
Class
=
knnclassify(Sample
, Training
, Group
, k
, distance
, rule
)
Sample
| Матрица, строки которой будут классифицированы в группы. Sample должен иметь одинаковое число столбцов как Training . |
Training
| Матрица раньше группировала строки в матричном Sample . Training должен иметь одинаковое число столбцов как Sample . Каждая строка Training принадлежит группе, значение которой является соответствующей записью Group . |
Group | Вектор, отличные значения которого задают группировку строк в Training . |
k | Количество самых близких соседей используется в классификации. Значением по умолчанию является 1 . |
distance | Вектор символов или строка, задающая метрику расстояния. Выбор:
|
rule | Вектор символов или строка, чтобы задать правило раньше решали, как классифицировать выборку. Выбор:
|
классифицирует строки матрицы данных Class
=
knnclassify(Sample
, Training
, Group
)Sample
в группы, на основе группировки строк Training
. Sample
и Training
должны быть матрицами с одинаковым числом столбцов. Group
является вектором, отличные значения которого задают группировку строк в Training
. Каждая строка Training
принадлежит группе, значение которой является соответствующей записью Group
. knnclassify
присваивает каждую строку Sample
группе для самой близкой строки Training
. Group
может быть числовым вектором, вектором символов, строкой или массивом ячеек из символьных векторов. Training
и Group
должны иметь одинаковое число строк. knnclassify
обрабатывает NaN
s или пустые символьные вектора в Group
как отсутствующие значения, и игнорирует соответствующие строки Training
. Class
указывает, какая группа каждая строка Sample
была присвоена и имеет тот же тип как Group
.
позволяет вам задать Class
=
knnclassify(Sample
, Training
, Group
, k
)k
, количество самых близких соседей, используемых в классификации. Значением по умолчанию является 1
.
позволяет вам задать метрику расстояния. Выбор для Class
=
knnclassify(Sample
, Training
, Group
, k
, distance
)distance
:
'euclidean'
— Евклидово расстояние (значение по умолчанию)
'cityblock'
— Сумма абсолютных разностей
'cosine'
— Один минус косинус включенного угла между точками (обработанный как векторы)
Корреляция
Один минус корреляция выборки между точками (обработанный как последовательности значений)
'hamming'
— Процент битов, которые отличаются (подходящий только для двоичных данных)
позволяет вам указать, что правило раньше решало, как классифицировать выборку. Выбор для Class
=
knnclassify(Sample
, Training
, Group
, k
, distance
, rule
)rule
:
самый близкий
Принцип большинства с самым близким тай-брейком точки (значение по умолчанию)
'random'
— Принцип большинства с тай-брейком случайной точки
'consensus'
— Правило согласия
Поведение по умолчанию должно использовать принцип большинства. Таким образом, точка выборки присвоена классу большинство k
, от которого самые близкие соседи. Используйте 'consensus'
, чтобы потребовать согласия, в противоположность принципу большинства. При использовании опции 'consensus'
точки, откуда не весь k
самые близкие соседи того же класса, не присвоены одному из классов. Вместо этого выводом Class
для этих точек является NaN
для числовых групп, ''
для названных строкой групп или undefined
для категориальных групп. При классификации больше чем двум группам или при использовании ровного значения для k
, может быть необходимо повредить связь в количестве самых близких соседей. Опциями является 'random'
, который выбирает случайное дополнительное время и 'nearest'
, который использует самого близкого соседа среди связанных групп, чтобы повредить связь. Поведение по умолчанию является принципом большинства с самым близким тай-брейком.
Следующий пример классифицирует строки матричного sample
:
sample = [.9 .8;.1 .3;.2 .6] sample = 0.9000 0.8000 0.1000 0.3000 0.2000 0.6000 training=[0 0;.5 .5;1 1] training = 0 0 0.5000 0.5000 1.0000 1.0000 group = [1;2;3] group = 1 2 3 class = knnclassify(sample, training, group) class = 3 1 2
Строка 1 из sample
является самой близкой к строке 3 training
, таким образом, class(1) = 3
. Строка 2 из sample
является самой близкой к строке 1 training
, таким образом, class(2) = 1
. Строка 3 из sample
является самой близкой к строке 2 training
, таким образом, class(3) = 2
.
Следующий пример классифицирует каждую строку данных в sample
в одну из этих двух групп в training
. Следующие команды создают матричный training
и группирующую переменную group
, и строят строки training
в двух группах.
training = [mvnrnd([ 1 1], eye(2), 100); ... mvnrnd([-1 -1], 2*eye(2), 100)]; group = [repmat(1,100,1); repmat(2,100,1)]; gscatter(training(:,1),training(:,2),group,'rb','+x'); legend('Training group 1', 'Training group 2'); hold on;
Следующие команды создают матричный sample
, классифицируют его строки в две группы и строят результат.
sample = unifrnd(-5, 5, 100, 2); % Classify the sample using the nearest neighbor classification c = knnclassify(sample, training, group); gscatter(sample(:,1),sample(:,2),c,'mc'); hold on; legend('Training group 1','Training group 2', ... 'Data in group 1','Data in group 2'); hold off;
Следующий пример использует те же данные, но классифицирует строки sample
с помощью трех самых близких соседей вместо одного.
gscatter(training(:,1),training(:,2),group,'rb','+x'); hold on; c3 = knnclassify(sample, training, group, 3); gscatter(sample(:,1),sample(:,2),c3,'mc','o'); legend('Training group 1','Training group 2','Data in group 1','Data in group 2');
Если вы сравниваете этот график с предыдущим графиком, вы видите, что некоторые точки данных классифицируются по-другому с помощью трех самых близких соседей.
[1] Митчелл, T. (1997). Машинное обучение, (McGraw-Hill).
classify
| classperf
| crossvalind
| fitcknn
| knnimpute