如何在Matlab上输入带有顺序数据的高桌子来训练机器学习算法?

时间:2019-07-05 21:23:50

标签: matlab

我正在尝试在不同的回归(机器学习)算法之间进行比较,以将一组数据转换为单个标量。最终将其用于生成图像,以使用超声弹性成像技术量化组织的刚度(剪切模量)...

...翻译:我将从事图像处理,除了每个像素都有自己的独立时间序列数据以及标量参数。我想使用这些值作为预测变量来输出另一个标量值,但是我意识到由于训练数据集的庞大规模,我需要依靠高数据表。

我正在将MATLAB R2019a与并行计算和机器学习/统计工具箱结合使用。我原本想使用Regression Learner应用程序,但由于两个原因它一直崩溃:小程序不接受高表输入,并且如果我将高表“收集”回RAM中,则学习者会抱怨它已退出尝试创建模型时占用的内存。

我认为这是因为applet并非设计用于处理高桌子,所以我选择通过手动创建回归模型来解决此问题。我将我的数据集保留为高表,并按顺序包含以下字段:

  • 时间(1 x 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');

如何成功创建模型?

0 个答案:

没有答案