欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码

发布时间:2024/9/30 编程问答 36 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

RBF(径向基神经网络)

GRNN广义神经网络

PNN概率神经网络

RBF算例实现(回归)

数据集

% 1. 导入数据
load spectra_data.mat
NIR输入,octane输出

%% I. 清空环境变量 clear all clc%% II. 训练集/测试集产生 %% % 1. 导入数据 load spectra_data.mat%% % 2. 随机产生训练集和测试集 temp = randperm(size(NIR,1)); % 训练集——50个样本 P_train = NIR(temp(1:50),:)'; T_train = octane(temp(1:50),:)'; % 测试集——10个样本 P_test = NIR(temp(51:end),:)'; T_test = octane(temp(51:end),:)'; N = size(P_test,2);%% III. RBF神经网络创建及仿真测试 %% % 1. 创建网络 net = newrbe(P_train,T_train,30);%30为speend%% % 2. 仿真测试 T_sim = sim(net,P_test);%% IV. 性能评价 %% % 1. 相对误差error error = abs(T_sim - T_test)./T_test;%% % 2. 决定系数R^2 R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); %% % 3. 结果对比 result = [T_test' T_sim' error']%% V. 绘图 figure plot(1:N,T_test,'b:*',1:N,T_sim,'r-o') legend('真实值','预测值') xlabel('预测样本') ylabel('辛烷值') string = {'测试集辛烷值含量预测结果对比';['R^2=' num2str(R2)]}; title(string)

GRNN和PNN神经网络(分类)

数据集:经典案例鸢尾花分类

feature有4维数据:花萼长度,花萼宽度,花瓣长度,花瓣宽度

classes花的种类
‘setosa’, ‘versicolor’, ‘virginica’

%% I. 清空环境变量 clear all clc%% II. 训练集/测试集产生 %% % 1. 导入数据 load iris_data.mat%% % 2 随机产生训练集和测试集 P_train = []; T_train = []; P_test = []; T_test = []; for i = 1:3temp_input = features((i-1)*50+1:i*50,:);temp_output = classes((i-1)*50+1:i*50,:);n = randperm(50);% 训练集——120个样本P_train = [P_train temp_input(n(1:40),:)'];T_train = [T_train temp_output(n(1:40),:)'];% 测试集——30个样本P_test = [P_test temp_input(n(41:50),:)'];T_test = [T_test temp_output(n(41:50),:)']; end%% III. 模型建立 result_grnn = []; result_pnn = []; time_grnn = []; time_pnn = []; for i = 1:4for j = i:4p_train = P_train(i:j,:);p_test = P_test(i:j,:);%% % 1. GRNN创建及仿真测试t = cputime;% 创建网络net_grnn = newgrnn(p_train,T_train);% 仿真测试t_sim_grnn = sim(net_grnn,p_test);T_sim_grnn = round(t_sim_grnn);%取整操作,因为是分类,目标是整数t = cputime - t;time_grnn = [time_grnn t];result_grnn = [result_grnn T_sim_grnn'];%%% 2. PNN创建及仿真测试t = cputime;Tc_train = ind2vec(T_train);% 创建网络net_pnn = newpnn(p_train,Tc_train);% 仿真测试Tc_test = ind2vec(T_test);t_sim_pnn = sim(net_pnn,p_test);T_sim_pnn = vec2ind(t_sim_pnn);t = cputime - t;time_pnn = [time_pnn t];result_pnn = [result_pnn T_sim_pnn'];end end%% IV. 性能评价 %% % 1. 正确率accuracy accuracy_grnn = []; accuracy_pnn = []; time = []; for i = 1:10accuracy_1 = length(find(result_grnn(:,i) == T_test'))/length(T_test);accuracy_2 = length(find(result_pnn(:,i) == T_test'))/length(T_test);accuracy_grnn = [accuracy_grnn accuracy_1];accuracy_pnn = [accuracy_pnn accuracy_2]; end%% % 2. 结果对比 result = [T_test' result_grnn result_pnn] accuracy = [accuracy_grnn;accuracy_pnn] time = [time_grnn;time_pnn]%% V. 绘图 figure(1) plot(1:30,T_test,'bo',1:30,result_grnn(:,4),'r-*',1:30,result_pnn(:,4),'k:^') grid on xlabel('测试集样本编号') ylabel('测试集样本类别') string = {'测试集预测结果对比(GRNN vs PNN)';['正确率:' num2str(accuracy_grnn(4)*100) '%(GRNN) vs ' num2str(accuracy_pnn(4)*100) '%(PNN)']}; title(string) legend('真实值','GRNN预测值','PNN预测值') figure(2) plot(1:10,accuracy(1,:),'r-*',1:10,accuracy(2,:),'b:o') grid on xlabel('模型编号') ylabel('测试集正确率') title('10个模型的测试集正确率对比(GRNN vs PNN)') legend('GRNN','PNN') figure(3) plot(1:10,time(1,:),'r-*',1:10,time(2,:),'b:o') grid on xlabel('模型编号') ylabel('运行时间(s)') title('10个模型的运行时间对比(GRNN vs PNN)') legend('GRNN','PNN')

代码解析:
因为花有三种,所以需要分段划分

for i = 1:3temp_input = features((i-1)*50+1:i*50,:);temp_output = classes((i-1)*50+1:i*50,:);n = randperm(50);% 训练集——120个样本P_train = [P_train temp_input(n(1:40),:)'];T_train = [T_train temp_output(n(1:40),:)'];% 测试集——30个样本P_test = [P_test temp_input(n(41:50),:)'];T_test = [T_test temp_output(n(41:50),:)']; end

因为花有四个特征,我们将两两特征组合

for i = 1:4for j = i:4p_train = P_train(i:j,:);p_test = P_test(i:j,:);

代码和数据百度云

链接:https://pan.baidu.com/s/1Z1txLCFJ_Iif_skcb57PiQ 提取码:yn6c 复制这段内容后打开百度网盘手机App,操作更方便哦


作者:电气工程计算机萌新:余登武

总结

以上是生活随笔为你收集整理的MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。