【MATLAB第56期】#源码分享 | 基于MATLAB的机器学习算法单输入多输出分类预测模型思路(回归改分类)

简介: 因上一步骤进行了正常的回归预测,输出一般为小数点,且不是限定标签的数值。所以需要通过find函数,将回归预测的输出结果进行分段赋值。若涉及多隐含层,可修改[20,20,5]中的数字。前2个20代表两层隐含层的神经元数 ,后面的5为输出节点,根据本案例数据设置。输出分为五个指标,每个指标共4个评分维度,即【0 10 20 30】归一化区间可自行设置,默认[-1,1],本文采用[0,1]根据四舍五入的思路,如数据如果在5以下,则赋值为0,数据为1输入,5输出,总共482个样本。如果为[5,15),赋值为10…

【MATLAB第56期】#源码分享 | 基于MATLAB的机器学习算法单输入多输出分类预测模型思路(回归改分类)

针对单输入多输出分类预测,可采用回归的方式进行预测。
本文采用BP神经网络进行演示。

一、导入数据

e035de0384857890a28dcaf324a29422_9ea31e96f2da49a28dd531cf70d8ac3f.png

数据为1输入,5输出,总共482个样本。
输出分为五个指标,每个指标共4个评分维度,即【0 10 20 30】

%%  导入数据
load data

二、数据样本划分

保持样本均匀多样性,可将数据打乱。

temp = randperm(size(data,1));%打乱数据顺序

若不需要打乱,上面代码改成:

temp = 1:size(data,1):;%不打乱数据

训练样本数量可自行设置 ,本文设置为422。
代码如下:

%%  划分训练集和测试集
temp = randperm(size(data,1));%打乱数据顺序

NN=422;%训练数量
P_train = data(temp(1: NN), 6 )';%422个数据为训练,剩余为测试,第6列y为输入
T_train = data(temp(1: NN), 1: 5)';%x为输出
M = size(P_train, 2);

P_test = data(temp(NN+1: end), 6 )';
T_test = data(temp(NN+1: end), 1: 5)';
N = size(P_test, 2);

三、归一化设置

常用归一化有两种,即最大最小值归一化及标准值归一化。

method=@mapminmax;%最大最小值归一化
method=@mapstd;%标准值归一化

归一化区间可自行设置,默认[-1,1],本文采用[0,1]

%%  数据归一化
method=@mapstd;
[p_train, ps_input] = method(P_train, 0, 1);
p_test = method('apply', P_test, ps_input);

[t_train, ps_output] = method(T_train, 0, 1);
t_test = method('apply', T_test, ps_output);

四、模型创建及预测

熟悉的BP网络建模过程,不多介绍。
若涉及多隐含层,可修改[20,20,5]中的数字。前2个20代表两层隐含层的神经元数 ,后面的5为输出节点,根据本案例数据设置。
若增加或者减少隐含层,需要更改后面对应的激活函数。

net = newff(minmax(p_train), [20,20,5],{
   
   'logsig','logsig','purelin'});

代码如下:

%%  创建网络
%net = newff(minmax(p_train), t_train, 10);
net = newff(minmax(p_train), [20,20,5],{
   
   'logsig','logsig','purelin'});
%%  设置训练参数
net.trainParam.epochs = 2000;     % 迭代次数 
net.trainParam.goal = 1e-7;       % 误差阈值
net.trainParam.lr = 0.01;         % 学习率
net.trainFcn = 'trainlm';

%%  训练网络
net = train(net, p_train, t_train);

%%  仿真测试
t_sim1 = sim(net, p_train);
t_sim2 = sim(net, p_test );

%%  数据反归一化
T_sim1 = method('reverse', t_sim1, ps_output);
T_sim2 = method('reverse', t_sim2, ps_output);

五、分类预测结果

因上一步骤进行了正常的回归预测,输出一般为小数点,且不是限定标签的数值。所以需要通过find函数,将回归预测的输出结果进行分段赋值。
根据四舍五入的思路,如数据如果在5以下,则赋值为0,
如果为[5,15),赋值为10...
依次进行赋值。

for i = 1: 5
[m1,n1]=find(T_sim(i,:)<5);T_sim1(i,n1)=0;
[m2,n2]=find(T_sim(i,:)<15 & T_sim1(i,:)>=5);T_sim1(i,n2)=10;
end

六、评价指标及绘图

bd63c687f4e3ac1225cb234520fa33d6_58e3c06ca8a94d02b44a4dc6ce95a7e4.png



%%  绘图
figure
subplot(2, 1, 1)
plot(1: M, T_train(i, :), 'r-*', 1: M, T_sim1(i, :), 'b-o', 'LineWidth', 1)
legend(['x' num2str(i) '真实值'],['x' num2str(i) '预测值'])
xlabel('预测样本')
ylabel('预测结果')
string = {
   
   '训练集预测结果对比'; ['准确率acc=' num2str(acc1(i, :))]};
title(string)
xlim([1, M])
grid

subplot(2, 1, 2)
plot(1: N, T_test(i, :), 'r-*', 1: N, T_sim2(i, :), 'b-o', 'LineWidth', 1)
legend(['x' num2str(i) '真实值'],['x' num2str(i) '预测值'])
xlabel('预测样本')
ylabel('预测结果')
string = {
   
   '测试集预测结果对比';['准确率acc=' num2str(acc2(i, :))]};
title(string)
xlim([1, N])
grid

%%  分割线
disp('**************************')
disp(['下列是输出', num2str(i)])
disp('**************************')



end

七、测试新数据

若输入为一个新值,则预测结果参考下列代码:

%% 测试新数据
p_newtest=21.6;% 输入新数据
p_newtest1 = method('apply',p_newtest, ps_input);
t_simnew = sim(net, p_newtest1);

T_simnew = method('reverse', t_simnew , ps_output);

T_simnew

八、代码获取

后台私信回复“56期”,可获取下载链接。

相关文章
|
4月前
|
存储 算法 数据可视化
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
基于 MATLAB的GUI信号处理界面设计 源码+运行截图
145 2
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
数据链中常见电磁干扰matlab仿真,对比噪声调频,线性调频,噪声,扫频,灵巧五种干扰模型
本项目展示了用于分析和模拟电磁干扰对数据链系统影响的算法。通过Matlab 2022a运行,提供无水印效果图预览。完整代码包含详细中文注释及操作视频。理论部分涵盖五种常见干扰模型:噪声调频、线性调频、噪声、扫频和灵巧干扰,详细介绍其原理并进行对比分析。灵巧干扰采用智能技术如认知无线电和机器学习,自适应调整干扰策略以优化效果。
|
2月前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
213 13
|
2月前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
3月前
|
算法
基于HASM模型的高精度建模matlab仿真
本课题使用HASM进行高精度建模,介绍HASM模型及其简化实现方法。HASM模型基于层次化与自适应统计思想,通过多层结构捕捉不同尺度特征,自适应调整参数,适用于大规模、高维度数据的分析与预测。MATLAB2022A版本运行测试,展示运行结果。
|
4月前
|
机器学习/深度学习 算法 数据处理
基于最小二乘法的太阳黑子活动模型参数辨识和预测matlab仿真
本项目基于最小二乘法,利用Matlab对太阳黑子活动进行模型参数辨识和预测。通过分析过去288年的观测数据,研究其11年周期规律,实现对太阳黑子活动周期性的准确建模与未来趋势预测。适用于MATLAB2022a版本。
|
4月前
|
算法
基于Kronig-Penney能带模型的MATLAB求解与仿真
基于Kronig-Penney能带模型的MATLAB求解与仿真,利用MATLAB的多种数学工具简化了模型分析计算过程。该模型通过一维周期势垒描述晶体中电子运动特性,揭示了能带结构的基本特征,对于半导体物理研究具有重要价值。示例代码展示了如何使用MATLAB进行模型求解和图形绘制。
|
4月前
|
机器学习/深度学习 算法 数据可视化
机器学习的核心功能:分类、回归、聚类与降维
机器学习领域的基本功能类型通常按照学习模式、预测目标和算法适用性来分类。这些类型包括监督学习、无监督学习、半监督学习和强化学习。
108 0
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现

热门文章

最新文章