MATLAB - использование knnclassify - PullRequest
       7

MATLAB - использование knnclassify

2 голосов
/ 14 декабря 2009

При выполнении:

load training.mat
training = G

load testing.mat
test = G

и затем:

>> knnclassify(test.Inp, training.Inp, training.Ltr)

??? Error using ==> knnclassify at 91
The length of GROUP must equal the number of rows in TRAINING.

С:

>> size(training.Inp)
ans =
          40          40        2016

И

>> length(training.Ltr)
ans =
        2016

Как я могу дать второму параметру knnclassify (TRAINING) трехмерную матрицу training.inp, чтобы количество строк было 2016 (третье измерение)?

1 Ответ

3 голосов
/ 15 декабря 2009

Предполагая, что ваши трехмерные данные интерпретируются как матрица 40 на 40 объектов для каждого из экземпляров 2016 года (третье измерение), нам придется перестроить их как матрицу размера 2016 на 1600 (строкиобразцы, столбцы размеры):

%# random data instead of the `load data.mat`
testing = rand(40,40,200);
training = rand(40,40,2016);
labels = randi(3, [2016 1]);     %# a class label for each training instance
                                 %# (out of 3 possible classes)

%# arrange data as a matrix whose rows are the instances,
%# and columns are the features
training = reshape(training, [40*40 2016])';
testing = reshape(testing, [40*40 200])';

%# k-nearest neighbor classification
prediction = knnclassify(testing, training, labels);
...