千家信息网

GRNN与PNN实例对比分析

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要介绍"GRNN与PNN实例对比分析",在日常操作中,相信很多人在GRNN与PNN实例对比分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"GRNN与PNN实
千家信息网最后更新 2024年11月30日GRNN与PNN实例对比分析

这篇文章主要介绍"GRNN与PNN实例对比分析",在日常操作中,相信很多人在GRNN与PNN实例对比分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"GRNN与PNN实例对比分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

%% 清空环境变量

clear

clc

%% 训练集/测试集产生

% 导入数据

load iris_data.mat

% 随机产生训练集和测试集

P_train = [];

T_train = [];

P_test = [];

T_test = [];

for i = 1:3

temp_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

%% 模型建立

result_grnn = [];

result_pnn = [];

time_grnn = [];

time_pnn = [];

for i = 1:4

for j = i:4

p_train = P_train(i:j,:);

p_test = P_test(i:j,:);

%% 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'];

%% 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

%% 性能评价

% 正确率accuracy

accuracy_grnn = [];

accuracy_pnn = [];

time = [];

for i = 1:10

accuracy_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

% 结果对比

result = [T_test' result_grnn result_pnn];

accuracy = [accuracy_grnn;accuracy_pnn];

time = [time_grnn;time_pnn];

%% 绘图

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')

到此,关于"GRNN与PNN实例对比分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0