MATLAB数据建模 - 用单层感知器实现多个神经元的分类

版权声明:转载请联系作者,获得允许后,添加链接及作者到页首 https://blog.csdn.net/weixin_40683253/article/details/83579236

训练样本矩阵:

P = [0.1  0.7  0.8  0.8  1.0  0.3  0.0  –0.3  –0.5  –1.5;

    1.2  1.8  1.6  0.6  0.8  0.5  0.2  0.8   –1.5  –1.3];

训练样本对应的分类:

T = [1  1  1 0  0 1  1  1  0  0 ;0  0  0  0  0  1  1  1  1  1];

用MATLAB实现分类,并画出网络模型。

MATLAB代码:

P= [0.1  0.7  0.8  0.8  1.0  0.3  0.0  -0.3  -0.5  -1.5; 1.2  1.8  1.6  0.6  0.8  0.5  0.2  0.8  -1.5  -1.3];                        %给定训练样本数据
T= [1 1 1 0 0 1 1 1 0 0 ; 0 0 0 0 0 1 1 1 1 1];    %给定样本数据所对应的类别,用1
和0来表示两种类别
net=newp([-2 2;-1 1],2);     %创建一个有两个输入、样本数据的取值范围都在
[-1,1] %之间,并且网络有两个神经元的感知器神经网络
net.trainParam.epochs = 30;             %设置网络的最大训练次数为30次
net=train(net,P,T);                     %使用训练函数对创建的网络进行训练
Y=sim(net,P)                          %对训练后的网络进行仿真
E1=mae(Y-T)                  %计算网络的平均绝对误差,表示网络错误分类
Q=[0.7  1.9  0.9  -0.4  0.2  1.3  -1.5  -0.3  -0.7  1.5; 1.2  0.4  -1.6  0.1 1.9  0.0  0.2  0.8  -1.5  0.9];          %检测训练好的神经网络的性能
Y1=sim(net,Q)                   %对网络进行仿真,仿真输出即为分类的结果
figure;                                %创建一个新的绘图窗口
plotpv(Q,Y1);                           %在坐标图中绘制测试数据
plotpc(net.iw{1},net.b{1})                 %在坐标图中绘制分类线

运行结果:

Y =

     1     1     1     0     0     1     1     1     0     0

     0     0     0     0     0     1     1     1     1     1

扫描二维码关注公众号,回复: 3862850 查看本文章

E1 =0

Y1 =

     1     0     0     1     1     0     1     1     0     0

     0     0     1     1     0     1     1     1     1     0

训练误差曲线:

训练后的分类线:

网络模型:

猜你喜欢

转载自blog.csdn.net/weixin_40683253/article/details/83579236