matlab練習程序(異或分類)


clear all;
close all;
clc;

%生成兩組已標記數據
randn('seed',1);
mu1=[0 0];
S1=[0.5 0;
    0 0.5];     
P1=mvnrnd(mu1,S1,100);

mu2=[0 6];
S2=[0.5 0;
    0 0.5];        
P2=mvnrnd(mu2,S2,100);

mu3=[6 6];
S3=[0.5 0;
    0 0.5];      
P3=mvnrnd(mu3,S3,100);

mu4=[6 0];
S4=[0.5 0;
    0 0.5];        
P4=mvnrnd(mu4,S4,100);

P = [P1;P2;P3;P4]';

%設置標記
T1 = zeros(100,1);
T2 = ones(100,1);

T11 = [T1;T1;T2;T2]';
T22 = [T1;T2;T2;T1]';
%T11 = [T1;T2;T1;T1]';
%T22 = [T1;T1;T1;T2]';

net1 = newp([1 1; 1 1],1);
net1 = train(net1,P,T11);

net2 = newp([1 1; 1 1],1);
net2 = train(net2,P,T22);

plotpv(P,[T1;T2;T1;T2]');             %畫出數據
plotpc(net1.iw{1,1},net1.b{1,1})      %畫出分類線
plotpc(net2.iw{1},net2.b{1})          %畫出分類線

%生成測試數據
mu2=[3 3 ];
S2=[2 0 ;
    0 2];
Q=mvnrnd(mu2,S2,100)';
Y1 = sim(net1,Q) ;                  %Y是利用感知器net對Q進行分類的結果
Y2 = sim(net2,Q);
Y = xor(Y1,Y2);
figure;
plotpv(Q,Y);                    %畫出輸入的結果表示的點
plotpc(net1.iw{1},net1.b{1})      %畫出分類線
plotpc(net2.iw{1},net2.b{1})      %畫出分類線

對已標記數據分類:

對測試數據分類:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM