2014-09-19 4 views
0

Я все еще не очень хорошо знаком с использованием MATLAB, поэтому прошу прощения, если мой вопрос кажется немного глупым. Я пытаюсь изучить классификацию K-NN, и мой профессор сказал, что я должен начать с MATLAB. У меня есть вектор, давайте назовем его x, который содержит 2 столбца данных. Первый столбец - это функция 1, а вторая - функция 2. Каждая строка в x представляет собой одну точку данных. У меня также есть другой вектор, назовем его c, который содержит метки классов для каждой точки данных (1 или 2), всего 2 класса. Вот проблема: я должен использовать функцию «knnsearch», чтобы найти k-соседей, и построить классификатор K-NN. Я знаю, какие пункты моих данных являются наборами обучения, проверки и тестирования. Затем я должен посмотреть на количество очков, которые были неправильно классифицированы, и посмотреть, как это изменяется с увеличением k.Понимание алгоритма knn (классификация) в MATLAB

Я думаю, что у меня есть идея, как работает knnsearch, но понятия не имею, куда идти оттуда. Может ли кто-нибудь помочь? Даже подсказки о том, как работает алгоритм, были бы полезны на этом этапе, потому что я потратил более 11 часов, пытаясь понять эту проблему.

ответ

1

Вы можете обнаружить, что класс ClassificationKNN подходит вам для вашего удобства, чем функция knnsearch. knnsearch просто находит ближайших соседей; ClassificationKNN применяет это, чтобы построить классификационную модель. Вы можете сделать это сами, если хотите, но ClassificationKNN намного проще.

Например:

% X is your nx2 array of training data 
% Y is your nx1 array of training labels 

model = ClassificationKNN.fit(X,Y); 

% newX is an mx2 array of test data 

predictedY = predict(model, newX) 

Это должно быть так же просто, как это. Если вы посмотрите в документации для Statistics Toolbox, есть еще несколько демонстраций ClassificationKNN.

+0

Сэм, я ценю вашу помощь здесь. Я думаю, ваше решение было бы здорово, но я не чувствую, что я бы это понял, если бы просто использовал функцию knnsearch, чтобы найти алгоритм, а затем сам построить процесс классификации. У вас есть совет, если я хочу это сделать? Если нет, есть ли ресурс, на который вы могли бы указать мне? –

0

Если вы хотите просто найти к-NN, вы можете использовать функцию MATLAB обеспечивает:

IDX = knnsearch(X,Y) 

Here вы можете прочитать больше.

Кроме того, вы можете найти this ответ полезный.

Смежные вопросы