2

するとき:

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

行数が 2016 (3 次元) になるように、knnclassify (TRAINING) の 2 番目のパラメーターに training.inp 3-D マトリックスを指定するにはどうすればよいですか?

4

1 に答える 1

3

3D データが 2016 の各インスタンス (3 番目の次元) の 40 行 40 列の特徴の行列として解釈されると仮定すると、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);
于 2009-12-14T22:09:14.720 に答える