Из документации:
class = classify(sample,training,group) classifies each row of the data in sample into one of the groups in training. (See Grouped Data.) sample and training must be matrices with the same number of columns. group is a grouping variable for training. Its unique values define groups; each element defines the group to which the corresponding row of training belongs.
Это «группа» должна иметь такое же количество строк, что и обучение. Из примера в помощи:
load fisheriris
SL = meas(51:end,1);
SW = meas(51:end,2);
group = species(51:end);
SL & SW является 100 × 1 матрица, которые будут использоваться для обучения (два различных измерений, выполненных на каждом из 100 образцов). группа представляет собой массив из 100 × 1 ячеек строк, указывающих, к каким видам относится каждый из этих измерений. Он также может быть массивом символов или просто списком чисел (1,2,3), где каждое число относится к другой группе, но оно должно содержать 100 строк.
например. если ваша матрица обучения была 100 х 1 матрица двойников, где первые 50 были ценности, которые принадлежали «а», а второй 50 были ценности, которые принадлежали к «Ъ» вашей группы матрицы могут быть:
group = [repmat('a',50,1);repmat('b',50,1)];
Однако, если все «группы» просто не перекрывающихся диапазонов, как указано здесь в комментариях:
What I want classify to do is work out whether or not each number in "sample" is type A, ie, in the range -0.04416 +/- 0.0163, or type B, with the range -0.00914 +/- 0.00742
, то вам не нужно классифицировать. Для того, чтобы извлечь значения из образца, которые равны значению плюс или минус какой-то толерантности:
sample1 = sample(abs(sample-value)<tol);
ETA после последнего комментария: «группа» может быть числовой вектор, так что если у вас есть набор данных для обучения которые вам необходимо сгруппировать на основе диапазонов некоторой переменной, то что-то подобное (этот код не установлен, но основной принцип должен быть звук):
%presume "data" is our training data (381 x 3) and "sample" (n x 2) is the data we want to classify
group = zeros(length(data),1); %empty matrix
% first column is variable for grouping, second + third are data equivalent to the entries in "sample".
training = data(:,2:3);
% find where data(:,1) meets whatever our requirements are and label groups with numbers
group(data(:,1)<3)=1; % group "1" is wherever first column is below 3
group(data(:,1)>7)=2; % group "2" is wherever first column is above 7
group(group==0)=NaN; % set any remaining data to NaN
%now we classify "sample" based on "data" which has been split into "training" and "group" variables
class = classify(sample, training, group);
Что вы получите за 'класса (а) и' класса (б) '? – Schorsch
Такая же ошибка. Ошибка вызвана, прежде чем функция классификации сделает это. – user2587726
Вы хотите, чтобы 'a' был строкой? Как в '' a''? Или '' 'переменная, которая содержит категории? – Schorsch