分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测

分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测

目录

    • 分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第1张图片
分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第2张图片

分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第3张图片

分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第4张图片
分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第5张图片
分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第6张图片

基本介绍

MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测。由于BP神经网络在应用过程中初始权值和阈值随机选取,容易出现局部收敛极小点,从而降低拟合效果,为了解决这个问题,采用PSO优化BP神经网络(PSO-BP)算法的初始权值和阈值,解决局部极小点问题,提高BP神经网络算法的预测精度。在PSO中,整个搜索空间的维数D。

分类预测 | MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测_第7张图片

程序设计

  • 完整程序和数据下载:MATLAB实现PSO-BP粒子群优化BP神经网络多特征分类预测
function error = fun(pop, hiddennum, net, p_train, t_train)

%%  节点个数
inputnum  = size(p_train, 1);  % 输入层节点数
outputnum = size(t_train, 1);  % 输出层节点数

%%  提取权值和阈值
w1 = pop(1 : inputnum * hiddennum);
B1 = pop(inputnum * hiddennum + 1 : inputnum * hiddennum + hiddennum);
w2 = pop(inputnum * hiddennum + hiddennum + 1 : ...
    inputnum * hiddennum + hiddennum + hiddennum * outputnum);
B2 = pop(inputnum * hiddennum + hiddennum + hiddennum * outputnum + 1 : ...
    inputnum * hiddennum + hiddennum + hiddennum * outputnum + outputnum);

%%  网络赋值
net.Iw{1, 1} = reshape(w1, hiddennum, inputnum );
net.Lw{2, 1} = reshape(w2, outputnum, hiddennum);
net.b{1}     = reshape(B1, hiddennum, 1);
net.b{2}     = B2';

%%  网络训练
net = train(net, p_train, t_train);

%%  仿真测试
t_sim1 = sim(net, p_train);

%%  反归一化
T_sim1  = vec2ind(t_sim1 );
T_train = vec2ind(t_train);

%%  适应度值
error = 1 - sum(T_sim1 == T_train) / length(T_sim1);

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/128163536?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128151206?spm=1001.2014.3001.5502

你可能感兴趣的:(分类预测,分类预测,PSO-BP,粒子群优化BP神经网络,多特征分类预测)