基于鲸鱼算法(WOA)优化径向基神经网络(WOA-RBF)的数据回归预测,多变量输入模型。matlab代码,优化参数为扩散速度,采用交叉验证。评价指标包括:R2、MAE、MSE、RMSE和MA

 

clc;
clear all;
close all
tic
warning off

%%  导入数据
% 训练集——190个样本
P_train = xlsread('data','training set','B2:G191')';
T_train= xlsread('data','training set','H2:H191')';
% 测试集——44个样本
P_test=xlsread('data','test set','B2:G45')';
T_test=xlsread('data','test set','H2:H45')';

N = size(P_test, 2);          % 测试集样本数
M = size(P_train, 2);         % 训练集样本数

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

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

%%  参数初始化
pop=10; %种群数量
Max_iter=20; %  设定最大迭代次数

智能算法及其模型预测

好的,以下是鲸鱼算法(WOA)优化径向神经网络(WOA-RBF)的分类预测的 MATLAB 代码: ``` % 读取数据集 load iris_dataset.mat; % 数据预处理 inputs = irisInputs'; targets = irisTargets'; % 参数设置 N = size(inputs, 1); % 样本数 D = size(inputs, 2); % 特征数 K = size(targets, 2); % 类别数 M = 10; % 隐含层神经元数量 sigma_max = 1; % 高斯径向函数的最大半径 sigma_min = 0.1; % 高斯径向函数的最小半径 max_iter = 100; % 最大迭代次数 pop_size = 20; % 种群大小 a = 2; % 参数a c_max = 1; % 最大步长因子 c_min = 0; % 最小步长因子 % 初始化径向函数中心 rbf_center = datasample(inputs, M, 'Replace', false); % 初始化径向函数半径 rbf_sigma = linspace(sigma_max, sigma_min, M); % 初始化权值矩阵 W = randn(M, K); % 初始化鲸鱼位置 X = zeros(pop_size, M * D + M + K); % 初始化最优鲸鱼位置 X_best = zeros(1, M * D + M + K); % 初始化最优适应度值 fit_best = Inf; % 初始化步长因子 c = c_max - linspace(0, 1, max_iter) * (c_max - c_min); % WOA算法主体部分 for iter = 1:max_iter for i = 1:pop_size % 计算适应度值 rbf_output = zeros(N, M); for m = 1:M rbf_output(:, m) = exp(-sum((inputs - rbf_center(m, :)).^2, 2) / (2 * rbf_sigma(m)^2)); end output = rbf_output * W; fit = 1 / N * sum(sum((targets - output).^2)); % 更新最优鲸鱼位置和最优适应度值 if fit < fit_best fit_best = fit; X_best = X(i, :); end % 随机选择两个鲸鱼 r1 = randi([1, pop_size]); r2 = randi([1, pop_size]); % 计算向量D D = abs(X(r1, :) - X(r2, :)); % 更新位置 if rand() < 0.5 X(i, :) = X_best - c(iter) * D; else X(i, :) = X_best + c(iter) * D; end % 边界处理 X(i, 1:M * D) = max(min(X(i, 1:M * D), repmat(reshape(inputs', 1, []), pop_size, 1)), repmat(reshape(inputs', 1, []), pop_size, 1)); X(i, M * D + 1:M * D + M) = max(min(X(i, M * D + 1:M * D + M), repmat(reshape(rbf_sigma', 1, []), pop_size, 1)), repmat(reshape(rbf_sigma', 1, []), pop_size, 1)); X(i, M * D + M + 1:end) = max(min(X(i, M * D + M + 1:end), repmat(reshape(W', 1, []), pop_size, 1)), repmat(reshape(W', 1, []), pop_size, 1)); end % 更新径向函数中心和半径 rbf_center = reshape(X_best(1:M * D), M, D); rbf_sigma = X_best(M * D + 1:M * D + M); % 更新权值矩阵 W = reshape(X_best(M * D + M + 1:end), M, K); end % 测试模型 rbf_output = zeros(N, M); for m = 1:M rbf_output(:, m) = exp(-sum((inputs - rbf_center(m, :)).^2, 2) / (2 * rbf_sigma(m)^2)); end output = rbf_output * W; [~, predict] = max(output, [], 2); [~, label] = max(targets, [], 2); accuracy = sum(predict == label) / N; disp(['Accuracy: ', num2str(accuracy)]); % 绘制决策边界 figure; gscatter(inputs(:, 1), inputs(:, 2), label); hold on; x1range = min(inputs(:, 1)):0.01:max(inputs(:, 1)); x2range = min(inputs(:, 2)):0.01:max(inputs(:, 2)); [xx1, xx2] = meshgrid(x1range, x2range); XGrid = [xx1(:) xx2(:)]; rbf_output = zeros(length(XGrid), M); for m = 1:M rbf_output(:, m) = exp(-sum((XGrid - repmat(rbf_center(m, :), length(XGrid), 1)).^2, 2) / (2 * rbf_sigma(m)^2)); end YGrid = rbf_output * W; [~, predictions] = max(YGrid, [], 2); gscatter(XGrid(:, 1), XGrid(:, 2), predictions, 'k', '.', 20); title('WOA-RBF Decision Boundary'); legend('setosa', 'versicolor', 'virginica', 'Location', 'best'); ``` 注意:该代码仅供参考,实际使用时需要根据具体情况进行一定的修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能算法及其模型预测

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值