knnclassify

Классифицируйте данные с помощью самого близкого соседнего метода

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, distancerule)

Аргументы

Sample Матрица, строки которой будут классифицированы в группы. Sample должен иметь одинаковое число столбцов как Training.
Training Матрица раньше группировала строки в матричном Sample. Training должен иметь одинаковое число столбцов как Sample. Каждая строка Training принадлежит группе, значение которой является соответствующей записью Group.
GroupВектор, отличные значения которого задают группировку строк в Training.
kКоличество самых близких соседей используется в классификации. Значением по умолчанию является 1.
distanceВектор символов или строка, задающая метрику расстояния. Выбор:
  • 'euclidean' — Евклидово расстояние (значение по умолчанию)

  • 'cityblock' — Сумма абсолютных разностей

  • 'cosine' — Один минус косинус включенного угла между точками (обработанный как векторы)

  • Корреляция Один минус корреляция выборки между точками (обработанный как последовательности значений)

  • 'hamming' — Процент битов, которые отличаются (подходящий только для двоичных данных)

ruleВектор символов или строка, чтобы задать правило раньше решали, как классифицировать выборку. Выбор:
  • самый близкий Принцип большинства с самым близким тай-брейком точки (значение по умолчанию)

  • 'random' — Принцип большинства с тай-брейком случайной точки

  • 'consensus' — Правило согласия

Описание

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, distancerule) позволяет вам указать, что правило раньше решало, как классифицировать выборку. Выбор для rule:

  • самый близкий Принцип большинства с самым близким тай-брейком точки (значение по умолчанию)

  • 'random' — Принцип большинства с тай-брейком случайной точки

  • 'consensus' — Правило согласия

Поведение по умолчанию должно использовать принцип большинства. Таким образом, точка выборки присвоена классу большинство k, от которого самые близкие соседи. Используйте 'consensus', чтобы потребовать согласия, в противоположность принципу большинства. При использовании опции 'consensus' точки, откуда не весь k самые близкие соседи того же класса, не присвоены одному из классов. Вместо этого выводом Class для этих точек является NaN для числовых групп, '' для названных строкой групп или undefined для категориальных групп. При классификации больше чем двум группам или при использовании ровного значения для k, может быть необходимо повредить связь в количестве самых близких соседей. Опциями является 'random', который выбирает случайное дополнительное время и 'nearest', который использует самого близкого соседа среди связанных групп, чтобы повредить связь. Поведение по умолчанию является принципом большинства с самым близким тай-брейком.

Примеры

Пример 51. Классификация строк

Следующий пример классифицирует строки матричного 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.

Пример 52. Классификация строк в одну из двух групп

Следующий пример классифицирует каждую строку данных в 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; 

Пример 53. Классификация строк Используя трех самых близких соседей

Следующий пример использует те же данные, но классифицирует строки 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).

Смотрите также

| | | |

Представлено до R2006a