Я пытаюсь сравнить разные регрессионные алгоритмы (машинное обучение) для преобразования набора данных в один скаляр. Это в конечном итоге будет использовано для генерации изображений для определения жесткости (модуля сдвига) ткани с помощью ультразвуковой эластографии ...
... перевод: я буду работать над обработкой изображений, за исключением того, что каждый пиксель имеет свои собственные независимые данные временных рядов, а также скалярные параметры. Я хочу использовать эти значения в качестве предикторов для вывода другого скалярного значения, но я понял, что мне нужно полагаться на большие таблицы данных из-за огромного размера моего обучающего набора данных.
Я использую MATLAB R2019a с наборами инструментов для параллельных вычислений и машинного обучения / статистики. Изначально я хотел использовать приложение Regression Learner, но оно продолжало падать по двум причинам: апплет не принимал высокие таблицы для входных данных, и если я «собрал» высокие таблицы обратно в оперативную память, учащийся пожаловался бы, что его нет памяти, пока он пытался создать модели.
Я предположил, что это потому, что апплет не был предназначен для обработки высоких таблиц, поэтому я решил обойти эту проблему, создав свои регрессионные модели вручную. Я сохранил свой набор данных в виде высокой таблицы со следующими полями по порядку:
- время (1 х 50, двойной вектор)
- счастливчик (положительный скаляр)
- прелести (положительный, ненулевой скаляр)
- хлопья (положительный, ненулевой скаляр)
- смещение (1 x 50 двойной вектор)
- G (скаляр; требуемое выходное значение)
... и обработал его следующим образом:
% define anonymous functions for models
modelfun_nonlin=@(b,x) b(1).*x(:,1).^b(2) + b(3).*x(:,2).^b(4) + b(5).*x(:,3).^b(6) + b(7).*x(:,4).^b(8) + b(9).*x(:,5).^b(10)+b(11);
model_b0_nonlin=[1 -2 1 4 1 1 1 1 1 2 0];
% try linear model
clc;disp('Creating linear model...');
model_linear=fitlm( T, 'poly24112');
% try nonlinear model
clc;disp('Creating nonlinear model...');
model_nonlin=fitnlm(T, modelfun_nonlin, model_b0_nonlin);
% this continues on for other model types (SVM, bagged trees etc.)
Честно говоря, я не знаю, чего ожидать от вывода, но я почти уверен, что эта ошибка не в этом:
Evaluating tall expression using the Parallel Pool 'local':
- Pass 1 of 1: 0% complete
Evaluation 0% complete
Error using tall/fitlm>fitlm_array (line 193)
Predictor variables must be numeric vectors, numeric matrices, or categorical vectors.
Learn more about errors encountered during GATHER.
Error in tall/fitlm (line 38)
lm = fitlm_array(xOrT, varargin{:});
Error in tall/fitlm>fitlm_table (line 87)
lm = fitlm(X,Y,terms(:,xloc),otherargs{:},'VarNames',vnames,'CategoricalVar',iscat,...
Error in tall/fitlm (line 36)
lm = fitlm_table(xOrT, varargin{:});
Error in prepMLmodel (line 60)
model_linear=fitlm( T, 'poly24112');
Error in tall/gather (line 50)
[varargout{:}, readFailureSummary] = iGather(varargin{:});
Error in tall/fitlm>postprocess (line 206)
lmstruct = gather(lmstruct);
Error in tall/fitlm>fitlm_array (line 199)
lm = postprocess(out,formula); % imagine queueing this up for later
Error in tall/fitlm (line 38)
lm = fitlm_array(xOrT, varargin{:});
Error in tall/fitlm>fitlm_table (line 87)
lm = fitlm(X,Y,terms(:,xloc),otherargs{:},'VarNames',vnames,'CategoricalVar',iscat,...
Error in tall/fitlm (line 36)
lm = fitlm_table(xOrT, varargin{:});
Error in prepMLmodel (line 60)
model_linear=fitlm( T, 'poly24112');
Что я могу сделать, чтобы успешно создать модель?