网站备案中国开头,重庆安全员证书查询系统,无线网络优化是做什么的,网络营销的四个步骤贝叶斯优化GRU做多特征输入单个因变量输出的拟合预测模型。
程序内注释详细#xff0c;可学习性强。
程序语言为matlab#xff0c;需求版本至少2020及以上。
直接替换数据就可以用。
程序运行结束可以出优化结果图#xff0c;预测拟合图#xff0c;真是值与预测值对比图可学习性强。 程序语言为matlab需求版本至少2020及以上。 直接替换数据就可以用。 程序运行结束可以出优化结果图预测拟合图真是值与预测值对比图可打印多个评价指标方便分析学习。最近在项目里折腾时序预测发现个好玩的事儿——用贝叶斯优化调GRU超参数比手动调参效率高十倍。今天手把手教各位用Matlab整活这个多特征输入单输出的智能预测模型保证代码拿回去直接换数据就能跑。数据预处理是基本功先把数据喂进模型前的标准化操作不能少。这里用mapminmax做归一化防止某些特征值域过大搞乱权重% 导入数据假设数据是N×M表格最后一列为输出变量y data readtable(你的数据.csv); inputData data(:,1:end-1); % 前N-1列是特征 outputData data(:,end); % 最后一列是因变量 % 归一化到[0,1]区间 [normalized_input, input_ps] mapminmax(inputData, 0, 1); [normalized_output, output_ps] mapminmax(outputData, 0, 1);这段代码的inputps和outputps保留了归一化参数预测完成后需要反归一化还原真实值。构建GRU网络骨架直接上网络结构定义的核心代码function net create_gru(hiddenUnits, lr) layers [... sequenceInputLayer(size(normalized_input,1)) % 自动识别特征维度 gruLayer(hiddenUnits,Name,gru1) dropoutLayer(0.3) % 随机丢弃30%神经元防过拟合 fullyConnectedLayer(1) % 输出单变量 regressionLayer]; options trainingOptions(adam, ... Plots,none, ... LearnRateSchedule,piecewise,... LearnRateDropPeriod,20); net trainNetwork(XTrain, YTrain, layers, options); % 占位符实际在优化循环中调用 end这里埋了个伏笔——hiddenUnits和lr(学习率)后面会被贝叶斯优化自动调参。贝叶斯优化核心操作重头戏来了设置超参数搜索空间optimVars [ optimizableVariable(hiddenUnits, [10, 200], Type,integer) optimizableVariable(lr, [1e-4, 1e-2], Transform,log) ];然后启动30轮迭代优化results bayesopt((params)gruObjectiveFcn(params, XTrain, YTrain),... optimVars, ... MaxTime, Inf, ... IsObjectiveDeterministic, true, ... NumSeedPoints, 5, ... PlotFcn, {plotObjectiveModel,plotMinObjective});这里的gruObjectiveFcn是自定义的目标函数核心逻辑是计算验证集RMSE。贝叶斯优化会自动平衡exploration和exploitation比网格搜索聪明得多。预测与可视化全家桶优化完成后直接调用训练好的模型% 预测并反归一化 YPred predict(net, XTest); YPred mapminmax(reverse, YPred, output_ps); YTest mapminmax(reverse, YTest, output_ps); % 绘制暴击三连图 figure(Position,[100,100,1200,400]) subplot(1,3,1) plot(optimizationResults) % 优化过程收敛曲线 subplot(1,3,2) plot(YTest,LineWidth,1.5) hold on; plot(YPred,--); % 预测对比曲线 subplot(1,3,3) scatter(YTest, YPred) % 散点图看相关性 hold on; plot([min(YTest),max(YTest)], [min(YTest),max(YTest)], k--) % 打印硬核指标 fprintf(RMSE:%.4f\nMAE:%.4f\nR²:%.4f\n, ... sqrt(mean((YPred-YTest).^2)), ... mean(abs(YPred-YTest)), ... 1 - sum((YTest - YPred).^2)/sum((YTest - mean(YTest)).^2));这套组合拳下来模型表现好坏一目了然。特别是散点图里的45度参考线偏离越远说明预测偏差越大。完整代码里我还藏了个彩蛋——在数据划分时用了交叉验证增强泛化性。实际跑代码记得把数据路径换成自己的特征列数量自由调整无压力。需要改进的话可以尝试在GRU后面叠加全连接层或者调整贝叶斯优化的Acquisition Function类型。