这是输出层变换之后的样本分布,可以看到不同类别的样本比较明显的分隔开,一条直线分隔开的正确率达到90%
%% 显示三次样本分布
% 显示训练样本
train_m = traind(trainl==1,:);
train_m=train_m';
train_f = traind(trainl==0,:);
train_f=train_f';
figure(1)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('体重')
title('训练样本分布')
legend('男生','女生')
%% 隐藏层变换样本
hidden_tran = cell2mat(net.iw);
train_m=hidden_tran * train_m + net.b{1};
train_f=hidden_tran * train_f + net.b{1};
figure(2)
plot(train_m(1,:),train_m(2,:),'bo');
hold on;
plot(train_f(1,:),train_f(2,:),'r*');
xlabel('身高')
ylabel('体重')
title('隐藏层变换样本分布')
legend('男生','女生')
%% 输出层变换样本
layout_tran = cell2mat(net.lw);
train_m=layout_tran * train_m + net.b{2};
train_f=layout_tran * train_f + net.b{2};
figure(3)
plot(train_m(1,:),'bo');
hold on;
plot(train_f(1,:),'r*');
xlabel('身高')
ylabel('体重')
title('输出层变换样本分布')
legend('男生','女生')
这里的网络是简单的,如果设计出复杂的网络,就可以实现下面这样的变换