Как ввести в Matlab большую таблицу с последовательными данными для обучения алгоритмам машинного обучения? - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь сравнить разные регрессионные алгоритмы (машинное обучение) для преобразования набора данных в один скаляр. Это в конечном итоге будет использовано для генерации изображений для определения жесткости (модуля сдвига) ткани с помощью ультразвуковой эластографии ...

... перевод: я буду работать над обработкой изображений, за исключением того, что каждый пиксель имеет свои собственные независимые данные временных рядов, а также скалярные параметры. Я хочу использовать эти значения в качестве предикторов для вывода другого скалярного значения, но я понял, что мне нужно полагаться на большие таблицы данных из-за огромного размера моего обучающего набора данных.

Я использую 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');

Что я могу сделать, чтобы успешно создать модель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...