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神经网络原理及其例子代码的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。