Matlab机器学习App之Regression Learner回归分析与模型导出应用
原创作品,转载请注明出处,谢谢~
目录
软件与数据准备
- 我之前用的是matlabR2016b,里面没有regression learner这个App,现在使用的是Matlab R2019b,如果你的matlab没有的话可以看看是不是版本问题
- 准备需要进行回归分析的数据,我这里是采用的工作空间中的数据
Regression Learner具体使用
- 打开App新建会话
在这里我们可以选择自己的样本数据,即gauss_pitch这个矩阵,并使用列作为变量,第三列因变量作为我们的响应,前两列作为预测变量,右侧的验证可以根据需求选择交叉验证折数,或者选择留出法验证(一部分作为训练,另一部分用作验证)
我这里全部采用的如图所示的默认
然后就可以开始我们的会话啦! - 选择自己合适的模型,开始训练!
这里我们可以选择不同的模型对我们的数据进行训练
我这里选择了高斯过程回归的平方指数模型进行训练!
这里可以非常直观的看到我们训练的记录以及训练的误差,时间等信息 - 训练结果分析
我们可以选择响应图,预测实际图等看模型训练的效果并分析
比如这里的响应图,可以根据需要勾选是否显示误差等,X轴的坐标信息也可以更改 - 导出训练模型并进一步处理
这里我遇到一个小问题,因为我的训练数据是三维的,有两个自变量和一个响应,所以我想要画出样本数据的散点图的同时,利用高斯回归模型画出拟合的三维曲面,这就利用到app导出模型的功能。
可以选择是否导出训练数据,这里我选择第一项直接导出模型。
导出的模型在工作空间被命名为trainedModel,我们可以直接利用该模型,也可以另存为.mat文件方便下次使用该模型(load导入工作空间)
我这里只用到了trainedModel的predictFcn函数,这里附上写的一段代码
X1 = -100:0.1:100;
X2 = 0:0.001:1.5;
[X1FIT,X2FIT] = meshgrid(X1,X2);
[m, n] = size(X1FIT);
figure(3);
scatter3(gauss_pitch(:,1),gauss_pitch(:,2),gauss_pitch(:,3),15,'b','filled');
hold on;
Y = zeros(m,n);
for num = 1:n
X = [X1FIT(:,num), X2FIT(:,num)];
Y(:,num) = trainedModel.predictFcn(X);
end
mesh(X1FIT, X2FIT, Y);
X1和X2是划分的我感兴趣的范围,希望通过高斯模型绘制曲面的范围,meshgrid的作用就是把X1和X2转变为一个m*n维的矩阵,因此通过for循环,利用模型给预测响应值Y赋值,scatter3绘制出样本数据的散点图;
predictFcn可以根据待预测数据的输入,预测响应,这里我们的输入是X1和X2的范围;
最后,mesh,模型预测的曲面就绘制出来了!
最后
文章中存在的问题欢迎交流指正,如果有更好的使用方法或者使用心得也希望大佬们提出,希望这个笔记也能对大家有所帮助,peace & love~